<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-17T03:10:45.515275" rpa="false" schemaversion="5">
<suite id="s1" name="bgpcep-bgp-ingest.txt">
<suite id="s1-s1" name="Singlepeer Pc Shm 300Kroutes" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot">
<kw name="Setup_Everything" owner="PrefixcountKeywords" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.217116" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:46.212488" elapsed="0.004695"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:10:46.212001" elapsed="0.005264"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.222933" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:10:46.218732" elapsed="0.004237"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:10:46.223235" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:46.223084" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:46.223051" elapsed="0.000260"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.223941" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:46.223507" elapsed="0.000481"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.224529" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:10:46.224195" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:10:46.225195" elapsed="0.000308"/>
</kw>
<msg time="2026-04-17T03:10:46.225615" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:46.225665" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:46.224754" elapsed="0.000934"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.226278" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:46.225875" elapsed="0.000430"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.228302" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:46.227846" elapsed="0.000486"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.228761" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:46.228499" elapsed="0.000288"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.229339" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.228960" elapsed="0.000408"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.232844" elapsed="0.000236"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.233608" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:10:46.233273" elapsed="0.000362"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.233802" elapsed="0.000310"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.234975" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:10:46.234666" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:10:46.235048" elapsed="0.000056"/>
</return>
<msg time="2026-04-17T03:10:46.235238" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:46.234339" elapsed="0.000924"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:46.235984" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x785441375190&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:10:46.235506" elapsed="0.000664"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.236349" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:10:46.232168" elapsed="0.004434"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:46.231936" elapsed="0.004710"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:10:46.229430" elapsed="0.007250"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.237377" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:46.236943" elapsed="0.000479"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.238006" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:46.237599" elapsed="0.000449"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.238631" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:46.238238" elapsed="0.000436"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:10:46.227305" elapsed="0.011426"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:10:46.218329" elapsed="0.020458"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:46.238972" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:46.238855" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:46.238834" elapsed="0.000208"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.242506" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:46.242116" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.242998" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:46.242705" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:10:46.243068" elapsed="0.000046"/>
</return>
<msg time="2026-04-17T03:10:46.243244" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:10:46.241754" elapsed="0.001514"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:46.244336" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.244050" elapsed="0.000312"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:46.245243" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:46.245353" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:46.245031" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:46.249272" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:46.248282" elapsed="0.001076"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:46.248261" elapsed="0.001140"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:46.250058" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:46.250309" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:46.249621" elapsed="0.000739"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.251316" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:46.250631" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:46.252643" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.251727" elapsed="0.000966"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.254643" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:10:46.254820" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:10:46.254181" elapsed="0.000682"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:46.255243" elapsed="0.000484"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:10:46.257054" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:10:46.636111" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:10:44 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:10:46.256725" elapsed="0.379549"/>
</kw>
<msg time="2026-04-17T03:10:46.636359" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:46.256259" elapsed="0.380272"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:10:46.253150" elapsed="0.383539"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:10:46.637576" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:10:46.651850" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:10:46.652400" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:10:46.652633" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:10:46.637065" elapsed="0.015682"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:46.653528" elapsed="0.001200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.657488" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:46.656215" elapsed="0.001502"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:10:46.658678" elapsed="0.000111"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:46.658124" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:46.658030" elapsed="0.001016"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:10:46.659766" elapsed="0.000145"/>
</return>
<status status="PASS" start="2026-04-17T03:10:46.659268" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:46.659227" elapsed="0.001026"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:10:46.660396" elapsed="0.000036"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:46.665609" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.666670" elapsed="0.000405"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:46.667482" elapsed="0.000309"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:46.661201" elapsed="0.006689"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:10:46.247302" elapsed="0.420851"/>
</kw>
<msg time="2026-04-17T03:10:46.668315" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:46.246607" elapsed="0.421791"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:10:46.246105" elapsed="0.422405"/>
</kw>
<msg time="2026-04-17T03:10:46.668564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:46.245548" elapsed="0.423063"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:46.671553" elapsed="0.000309"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.672038" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:46.672442" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:46.668917" elapsed="0.003678"/>
</kw>
<msg time="2026-04-17T03:10:46.672687" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:10:46.244592" elapsed="0.428119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.673180" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:46.672897" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:10:46.673267" elapsed="0.000032"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:10:46.243681" elapsed="0.429713"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:46.243455" elapsed="0.429977"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:10:46.243321" elapsed="0.430148"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:10:46.239295" elapsed="0.434234"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:10:46.673698" elapsed="0.000211"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:46.688574" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:46.688464" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:46.688444" elapsed="0.000200"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:46.688956" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:46.689063" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:46.688814" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.689531" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:46.689273" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:46.689985" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:46.689741" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:46.690828" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:10:46.690591" elapsed="0.000424">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:10:46.691143" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:46.691189" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:46.690216" elapsed="0.000996"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:46.691525" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:46.691288" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:46.691269" elapsed="0.000354"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:46.692430" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.692137" elapsed="0.000319"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:46.692503" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:10:46.692653" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:46.691838" elapsed="0.000839"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.692844" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:46.693576" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:46.693683" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:46.693456" elapsed="0.000253"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.693877" elapsed="0.002595"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:46.696963" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:46.698293" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:46.696654" elapsed="0.002964">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:46.702906" elapsed="0.000351"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:46.703434" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:46.703748" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:46.700522" elapsed="0.003375"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:46.699926" elapsed="0.004017"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:46.688163" elapsed="0.015870">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:47.724352" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:47.724183" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:47.724138" elapsed="0.000318"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:47.724947" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:47.725112" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:47.724711" elapsed="0.000437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:47.725720" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:47.725358" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:47.726227" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:47.725940" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:47.726907" elapsed="0.000219"/>
</kw>
<msg time="2026-04-17T03:10:47.727236" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:47.727284" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:47.726466" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:47.728214" elapsed="0.000156"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:47.729128" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:47.728908" elapsed="0.000866">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:47.728555" elapsed="0.001284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:47.730408" elapsed="0.000110"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:47.730027" elapsed="0.000539"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:47.727627" elapsed="0.002983"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:47.727384" elapsed="0.003275"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:47.727364" elapsed="0.003320"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:47.731539" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:47.731249" elapsed="0.000320"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:47.731620" elapsed="0.000036"/>
</return>
<msg time="2026-04-17T03:10:47.731931" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:47.730921" elapsed="0.001035"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:47.732164" elapsed="0.000443"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:47.732984" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:47.733110" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:47.732867" elapsed="0.000277"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:47.733314" elapsed="0.002770"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:47.736564" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:47.737912" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:47.736290" elapsed="0.002058">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:47.741788" elapsed="0.000410"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:47.742382" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:47.742709" elapsed="0.000105"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:47.739280" elapsed="0.003587"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:47.738675" elapsed="0.004240"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:47.723710" elapsed="0.019294">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:48.762069" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:48.761923" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:48.761894" elapsed="0.000296"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:48.762645" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:48.762778" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:48.762404" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:48.763364" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:48.763002" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:48.763889" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:48.763611" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:48.764600" elapsed="0.000207"/>
</kw>
<msg time="2026-04-17T03:10:48.764916" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:48.764964" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:48.764151" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:48.765974" elapsed="0.000188"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:48.767013" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:48.766806" elapsed="0.000827">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:48.766381" elapsed="0.001330"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:48.768300" elapsed="0.000114"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:48.767902" elapsed="0.000560"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:48.765355" elapsed="0.003153"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:48.765077" elapsed="0.003560"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:48.765056" elapsed="0.003611"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:48.769497" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:48.769220" elapsed="0.000304"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:48.769575" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:10:48.769742" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:48.768901" elapsed="0.000866"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:48.769940" elapsed="0.000432"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:48.770708" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:48.770814" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:48.770558" elapsed="0.000283"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:48.771008" elapsed="0.002610"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:48.774083" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:48.775472" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:48.773814" elapsed="0.002044">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:48.779226" elapsed="0.000356"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:48.779768" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:48.780081" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:48.776756" elapsed="0.003496"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:48.776210" elapsed="0.004087"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:48.761496" elapsed="0.018886">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.800315" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:49.800141" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.800111" elapsed="0.000293"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.800839" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:49.800992" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.800646" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.801661" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:49.801290" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.802212" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:49.801896" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.802949" elapsed="0.000251"/>
</kw>
<msg time="2026-04-17T03:10:49.803310" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:49.803356" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.802457" elapsed="0.000921"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:49.804459" elapsed="0.000183"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.805512" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.805328" elapsed="0.000723">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.804868" elapsed="0.001269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.806751" elapsed="0.000127"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.806323" elapsed="0.000612"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:49.803778" elapsed="0.003209"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:49.803459" elapsed="0.003591"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.803435" elapsed="0.003647"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:49.808185" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.807816" elapsed="0.000405"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:49.808286" elapsed="0.000045"/>
</return>
<msg time="2026-04-17T03:10:49.808483" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:49.807404" elapsed="0.001105"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.808678" elapsed="0.000462"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.809449" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:49.809551" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.809335" elapsed="0.000242"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.809737" elapsed="0.002692"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.812875" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:49.814077" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.812609" elapsed="0.001921">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:49.817865" elapsed="0.000373"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.818433" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.818779" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:49.815449" elapsed="0.003518"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:49.814875" elapsed="0.004149"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.799629" elapsed="0.019533">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:10:49.819278" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:10:46.674693" elapsed="3.144681">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:46.674297" elapsed="3.145150"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:46.674140" elapsed="3.145362"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:10:46.673967" elapsed="3.145589"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:10:46.217665" elapsed="3.602005"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.823236" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:49.823075" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.823049" elapsed="0.000259"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.828734" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:49.828623" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.828605" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.829816" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:49.829410" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.830332" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:49.830018" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:10:49.830401" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:10:49.830564" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:10:49.829040" elapsed="0.001548"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.836429" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:49.836313" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.836294" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.837710" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:49.837585" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.837567" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:49.838264" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.837933" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.838690" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:49.838460" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.839881" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.839405" elapsed="0.001178">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:10:49.840722" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:10:49.840767" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.838885" elapsed="0.001904"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.842042" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.841496" elapsed="0.001329">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:10:49.842964" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:10:49.843010" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.840974" elapsed="0.002059"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.844046" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.843376" elapsed="0.000766">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:10:49.843123" elapsed="0.001157">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:10:49.843087" elapsed="0.001227">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:49.844493" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:49.844731" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:49.844579" elapsed="0.000294"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:49.844562" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.844967" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:49.846913" elapsed="0.000494"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.847828" elapsed="0.000304"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.848473" elapsed="0.000229"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:49.846162" elapsed="0.002626"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:49.845264" elapsed="0.003657"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.837300" elapsed="0.011711">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</status>
</kw>
<msg time="2026-04-17T03:10:49.849128" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:49.849173" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.836660" elapsed="0.012536"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.849377" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:49.849272" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.849252" elapsed="0.000188"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.850307" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:49.850086" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.850069" elapsed="0.000303"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.850820" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:49.850926" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.850532" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.851397" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:49.851135" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.851868" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:49.851606" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.852473" elapsed="0.000275"/>
</kw>
<msg time="2026-04-17T03:10:49.852846" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:49.852891" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.852083" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:49.854020" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.855689" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.855398" elapsed="0.000750">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.854618" elapsed="0.001620"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.857219" elapsed="0.000191"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.856490" elapsed="0.000991"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:49.853233" elapsed="0.004329"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:49.852986" elapsed="0.004627"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.852968" elapsed="0.004668"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:49.858664" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.858220" elapsed="0.000471"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:49.858740" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:10:49.858931" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:49.857852" elapsed="0.001104"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.859138" elapsed="0.000398"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.859831" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:49.859930" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.859725" elapsed="0.000230"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.860128" elapsed="0.002475"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.863034" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:49.864213" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.862778" elapsed="0.001805">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:49.869467" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.870378" elapsed="0.000401"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:49.871002" elapsed="0.000194"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:49.865411" elapsed="0.005867"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:49.864873" elapsed="0.006453"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.849843" elapsed="0.021567">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:49.871814" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:49.871903" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:10:49.836008" elapsed="0.036007">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:10:49.872143" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:49.872188" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.830998" elapsed="0.041213"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:49.872554" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:49.872288" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:49.872269" elapsed="0.000363"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:49.830838" elapsed="0.041817"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:10:49.830648" elapsed="0.042042"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:10:49.828322" elapsed="0.044424"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:10:49.820407" elapsed="0.052392"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:49.819851" elapsed="0.052988"/>
</kw>
<arg>http_timeout=125</arg>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:10:46.211574" elapsed="3.661312"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:10:49.874061" elapsed="0.000051"/>
</return>
<msg time="2026-04-17T03:10:49.874295" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:10:49.873883" elapsed="0.000437"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.879404" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:49.874530" elapsed="0.004921"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:10:49.879854" elapsed="0.000027"/>
</return>
<msg time="2026-04-17T03:10:49.880058" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:10:49.879650" elapsed="0.000434"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.884913" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:49.880278" elapsed="0.004680"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:10:49.873637" elapsed="0.011380"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:10:49.873367" elapsed="0.011696"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:10:49.873089" elapsed="0.012031"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.888694" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:49.888313" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.889208" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:49.888896" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:10:49.889277" elapsed="0.000029"/>
</return>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:10:49.885950" elapsed="0.003450"/>
</kw>
<msg time="2026-04-17T03:10:49.889437" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:49.885558" elapsed="0.003923"/>
</kw>
<msg time="2026-04-17T03:10:49.889575" level="INFO">${indices} = [1]</msg>
<var>${indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-17T03:10:49.885328" elapsed="0.004271"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.890646" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:10:49.890308" elapsed="0.000365"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:10:49.890718" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:10:49.890862" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:49.890004" elapsed="0.000882"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.896130" level="INFO">${operational_1} = ClusterManagement__session_1</msg>
<arg>${operational_${member_index}}</arg>
<arg>${session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:49.891061" elapsed="0.005116"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-17T03:10:49.889796" elapsed="0.006418"/>
</iter>
<var>${member_index}</var>
<value>@{indices}</value>
<status status="PASS" start="2026-04-17T03:10:49.889650" elapsed="0.006595"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.901191" level="INFO">${pc_all_indices} = [1]</msg>
<arg>${pc_all_indices}</arg>
<arg>${indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:49.896419" elapsed="0.004819"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="PASS" start="2026-04-17T03:10:49.901409" elapsed="0.000174"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:49.901754" elapsed="0.000176"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:10:49.903634" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:10:49.903741" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:10:49.903361" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:49.903939" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:10:49.905142" level="INFO">Logging into '10.30.171.117:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:10:50.611623" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:10:50 UTC 2026

  System load:  0.02               Processes:             107
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.117
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:10:49.904809" elapsed="0.707065"/>
</kw>
<msg time="2026-04-17T03:10:50.611968" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:49.904448" elapsed="0.707593"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:10:49.902894" elapsed="0.709272"/>
</kw>
<msg time="2026-04-17T03:10:50.612239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:49.902496" elapsed="0.709788"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-17T03:10:49.902154" elapsed="0.710204"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:10:50.621458" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-17T03:10:50.638485" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/../../../../tools/fastbgp/play.py' -&gt; '/home/jenkins//play.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:10:50.612603" elapsed="0.025973"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:10:50.640606" level="INFO">Executing command 'python3 --help'.</msg>
<msg time="2026-04-17T03:10:50.652955" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:10:50.653259" level="INFO">${stdout} = usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_ins...</msg>
<msg time="2026-04-17T03:10:50.653364" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:10:50.653455" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:10:50.640307" elapsed="0.013200"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.655695" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:10:50.654811" elapsed="0.000987"/>
</kw>
<msg time="2026-04-17T03:10:50.656009" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:10:50.656133" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:50.653955" elapsed="0.002275"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.657611" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:50.656643" elapsed="0.001026"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.658688" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:50.657872" elapsed="0.000957"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:50.657823" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:10:50.659254" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-17T03:10:50.659005" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:50.658972" elapsed="0.000471"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:10:50.659637" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:50.659561" elapsed="0.000163"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:50.659528" elapsed="0.000243"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.660157" elapsed="0.000060"/>
</kw>
<msg time="2026-04-17T03:10:50.660504" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>python3 --help</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:10:50.639706" elapsed="0.020852"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:10:50.660917" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-17T03:10:50.660705" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:50.660668" elapsed="0.000420"/>
</if>
<kw name="Fatal Error" owner="BuiltIn">
<arg>Python 3 is not installed!</arg>
<doc>Stops the whole test execution.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.661463" elapsed="0.000046"/>
</kw>
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="PASS" start="2026-04-17T03:10:50.639045" elapsed="0.022587"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:10:50.664517" level="INFO">Executing command 'bash -c 'cd "." &amp;&amp; python -c "import ipaddr"''.</msg>
<msg time="2026-04-17T03:10:50.805590" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:10:50.805914" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:10:50.806043" level="INFO">${stderr} = Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'</msg>
<msg time="2026-04-17T03:10:50.806228" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:10:50.664047" elapsed="0.142240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.808635" level="INFO">Length is 119.</msg>
<msg time="2026-04-17T03:10:50.808815" level="FAIL">'Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.807759" elapsed="0.001204">'Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'' should be empty.</status>
</kw>
<msg time="2026-04-17T03:10:50.809226" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-17T03:10:50.809323" level="INFO">${result} = 'Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'' should be empty.</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:50.806763" elapsed="0.002614"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.810838" level="INFO">${success} = False</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:50.809783" elapsed="0.001112"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.813513" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:50.812926" elapsed="0.000680"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.814525" level="INFO">Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:50.813971" elapsed="0.000655"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.815534" level="INFO">1</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:50.814986" elapsed="0.000642"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-17T03:10:50.812010" elapsed="0.003737"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:50.811074" elapsed="0.004752"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:50.811028" elapsed="0.004852"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:10:50.816297" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-17T03:10:50.816038" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:50.815993" elapsed="0.000490"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:10:50.816677" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:50.816600" elapsed="0.000162"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:50.816568" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.817173" elapsed="0.000047"/>
</kw>
<msg time="2026-04-17T03:10:50.817506" level="INFO">${passed} = False</msg>
<var>${passed}</var>
<arg>bash -c 'cd "${target_dir}" &amp;&amp; python -c "import ipaddr"'</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:10:50.663210" elapsed="0.154350"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="NOT RUN" start="2026-04-17T03:10:50.817907" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:50.817709" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:50.817673" elapsed="0.000362"/>
</if>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:10:50.858678" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py' -&gt; '/home/jenkins/.//ipaddr.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py</arg>
<arg>${target_dir}/</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:10:50.818407" elapsed="0.040383"/>
</kw>
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="PASS" start="2026-04-17T03:10:50.662228" elapsed="0.196670"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.859837" level="INFO">${timeout} = 215.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER} * (${COUNT} * 6.0 / 10000 + 35)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:10:50.859199" elapsed="0.000725"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.867356" level="INFO">${bgp_filling_timeout} = 215.0</msg>
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:50.860273" elapsed="0.007131"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.874787" level="INFO">${bgp_emptying_timeout} = 161.25</msg>
<arg>${bgp_emptying_timeout}</arg>
<arg>${bgp_filling_timeout*3.0/4}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:50.867586" elapsed="0.007248"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:50.877394" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:50.877280" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:50.877258" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:50.877855" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:50.877629" elapsed="0.000252"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:50.878244" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:50.878053" elapsed="0.000217"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:50.879033" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.878830" elapsed="0.000850">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:10:50.879795" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:10:50.879839" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:50.878443" elapsed="0.001435"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:10:50.880631" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.880443" elapsed="0.000700">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:10:50.881253" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:10:50.881297" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:50.880065" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.881985" level="FAIL">Failed to send the command: log:set INFO</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.881657" elapsed="0.000388">Failed to send the command: log:set INFO</status>
</kw>
<status status="FAIL" start="2026-04-17T03:10:50.881395" elapsed="0.000734">Failed to send the command: log:set INFO</status>
</branch>
<status status="FAIL" start="2026-04-17T03:10:50.881376" elapsed="0.000786">Failed to send the command: log:set INFO</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.882330" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.882565" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:50.882414" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:50.882397" elapsed="0.000254"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:10:50.882697" elapsed="0.000018"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:50.884424" elapsed="0.000140"/>
</kw>
<msg time="2026-04-17T03:10:50.884608" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:50.883916" elapsed="0.000763"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.884872" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.885050" elapsed="0.000020"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:50.883560" elapsed="0.001594"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:50.883004" elapsed="0.002197"/>
</kw>
<arg>log:set ${KARAF_LOG_LEVEL}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.875241" elapsed="0.010042">Failed to send the command: log:set INFO</status>
</kw>
<kw name="Shards_Stability_Get_Details" owner="ShardStability">
<var>${init_shard_details}</var>
<arg>${SHARD_MONITOR_LIST}</arg>
<doc>Return shard details stored in dictionary.
${shard_list} should be initialized as @{list} shard_name1:shard_type1 shard_name2:shard..</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.893530" elapsed="0.000031"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${init_shard_details}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.893750" elapsed="0.000023"/>
</kw>
<doc>Setup imported resources, SSH-login to tools system,
create HTTP session, put Python tool to tools system.</doc>
<status status="FAIL" start="2026-04-17T03:10:46.211176" elapsed="4.682690">Failed to send the command: log:set INFO</status>
</kw>
<test id="s1-s1-t1" name="Get Example Bgp Rib Owner" line="44">
<doc>Find an odl node which is able to accept incomming connection. It is a node, which is the owner of bgp rib, as it is a singleton service.
This node should be used for bgp peer to connect to.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.893950" elapsed="0.000727">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t2" name="Check_For_Empty_Ipv4_Topology_Before_Talking" line="56">
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:10:50.894916" elapsed="0.000539">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t3" name="Reconfigure_ODL_To_Accept_Connection" line="69">
<doc>Configure BGP peer module with initiate-connection set to false.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.895630" elapsed="0.000407">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t4" name="Start_Talking_BGP_Speaker" line="88">
<doc>Start Python speaker to connect to ODL.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.896388" elapsed="0.000399">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t5" name="Wait_For_Stable_Talking_Ipv4_Topology" line="92">
<doc>Wait until example-ipv4-topology becomes stable. This is done by checking stability of prefix count as seen from all nodes.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.897133" elapsed="0.000631">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t6" name="Check_Talking_Ipv4_Topology_Count" line="106">
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct as seen from node 1.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:10:50.898134" elapsed="0.000581">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t7" name="Kill_Talking_BGP_Speaker" line="117">
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:10:50.899061" elapsed="0.000486">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t8" name="Wait_For_Stable_Ipv4_Topology_After_Listening" line="124">
<doc>Wait until example-ipv4-topology becomes stable again as seen from node 1.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:10:50.899951" elapsed="0.000548">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t9" name="Check_For_Empty_Ipv4_Topology_After_Listening" line="137">
<doc>Example-ipv4-topology should be empty now as seen from node 1.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:10:50.900812" elapsed="0.000526">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s1-t10" name="Delete_Bgp_Peer_Configuration" line="147">
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.901650" elapsed="0.000484">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<kw name="Teardown_Everything" owner="PrefixcountKeywords" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:10:50.904482" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:10:50.927707" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:10:50.927993" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:10:50.904341" elapsed="0.023709"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:10:50.928204" elapsed="0.000079"/>
</return>
<msg time="2026-04-17T03:10:50.928563" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:10:50.904039" elapsed="0.024576"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.929616" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:50.929009" elapsed="0.000701"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:10:50.931691" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:10:50.931903" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:10:50.931006" elapsed="0.000951"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:10:50.932423" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-17T03:10:50.932162" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:50.932079" elapsed="0.000531"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.933019" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.933482" elapsed="0.000044"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:50.933883" elapsed="0.000043"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:10:50.930311" elapsed="0.003756"/>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:10:50.903706" elapsed="0.030505"/>
</kw>
<arg>KillPythonTool.Search_And_Kill_Remote_Python</arg>
<arg>'play\.py'</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:50.903244" elapsed="0.031067"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:50.934925" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:10:50.934727" elapsed="0.000432"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:10:50.935523" elapsed="0.000727"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:10:50.902942" elapsed="0.033435"/>
</kw>
<doc>BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used.

Copyright (c) 2015-2017 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 suite uses play.py as single iBGP peer which talks to
single controller in three node cluster configuration.
Test suite checks changes of the the example-ipv4-topology on all nodes.
RIB is not examined.

singlepeer_pc_shm_300kroutes:
pc - prefix counting
shm - shard monitoring (during the process of prefix advertizing)</doc>
<status status="FAIL" start="2026-04-17T03:10:45.557266" elapsed="5.379181">Suite setup failed:
Failed to send the command: log:set INFO</status>
</suite>
<suite id="s1-s2" name="Singlepeer Prefixcount" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.026705" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:51.022416" elapsed="0.004343"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:10:51.022173" elapsed="0.004655"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.031936" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:10:51.028009" elapsed="0.003956"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:10:51.032198" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:51.032055" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:51.032030" elapsed="0.000300"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.032852" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:51.032492" elapsed="0.000403"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.033433" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:10:51.033109" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:10:51.034011" elapsed="0.000333"/>
</kw>
<msg time="2026-04-17T03:10:51.034443" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:51.034491" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:51.033633" elapsed="0.000880"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.035114" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:51.034690" elapsed="0.000454"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.036252" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:51.035926" elapsed="0.000353"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.036692" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:51.036435" elapsed="0.000283"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.037226" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.036880" elapsed="0.000374"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.040702" elapsed="0.000231"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.041483" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:10:51.041132" elapsed="0.000378"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.041669" elapsed="0.000232"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.042756" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:10:51.042456" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:10:51.042827" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:10:51.042987" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:51.042134" elapsed="0.000878"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:51.043689" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x785440185190&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:10:51.043190" elapsed="0.000669"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.044025" elapsed="0.000215"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:10:51.040088" elapsed="0.004214"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:51.039885" elapsed="0.004462"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:10:51.037317" elapsed="0.007064"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.044947" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:51.044549" elapsed="0.000440"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.045614" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:51.045171" elapsed="0.000490"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.046235" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:51.045828" elapsed="0.000450"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:10:51.035425" elapsed="0.010910"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:10:51.027638" elapsed="0.018751"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:51.046607" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:51.046492" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:51.046472" elapsed="0.000203"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.049873" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:51.049468" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.050445" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:51.050062" elapsed="0.000414"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:10:51.050523" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:10:51.050682" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:10:51.049104" elapsed="0.001602"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:51.052010" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.051741" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:51.052950" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:51.053072" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:51.052728" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:51.057418" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:51.056818" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:51.056797" elapsed="0.000747"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:51.058358" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:51.058678" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:51.057781" elapsed="0.000970"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.059779" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:51.059058" elapsed="0.000830"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:51.061341" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.060208" elapsed="0.001196"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.063393" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:10:51.063643" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:10:51.062960" elapsed="0.000740"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:51.064124" elapsed="0.000562"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:10:51.066035" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:10:51.425228" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:10:44 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:10:46 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:10:51.065673" elapsed="0.359744"/>
</kw>
<msg time="2026-04-17T03:10:51.425607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:51.065050" elapsed="0.360731"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:10:51.061963" elapsed="0.363979"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:10:51.426912" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:10:51.439867" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:10:51.440147" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:10:51.440296" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:10:51.426368" elapsed="0.013996"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:51.440844" elapsed="0.000751"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.443369" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:51.442481" elapsed="0.001036"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:10:51.444158" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:51.443768" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:51.443724" elapsed="0.000672"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:10:51.444819" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-17T03:10:51.444507" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:51.444483" elapsed="0.000670"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:10:51.445240" elapsed="0.000022"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:51.450279" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.451391" elapsed="0.000415"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:51.452228" elapsed="0.000323"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:51.445928" elapsed="0.006719"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:10:51.055788" elapsed="0.397104"/>
</kw>
<msg time="2026-04-17T03:10:51.452970" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:51.054681" elapsed="0.398364"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:10:51.054044" elapsed="0.399254"/>
</kw>
<msg time="2026-04-17T03:10:51.453358" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:51.053328" elapsed="0.400094"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:51.456794" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.457293" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:51.457585" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:51.453828" elapsed="0.003900"/>
</kw>
<msg time="2026-04-17T03:10:51.457821" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:10:51.052287" elapsed="0.405558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.458291" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:51.458026" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:10:51.458373" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:10:51.051324" elapsed="0.407170"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:51.051064" elapsed="0.407469"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:10:51.050761" elapsed="0.407814"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:10:51.046901" elapsed="0.411788"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:10:51.458854" elapsed="0.000213"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:51.472843" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:51.472727" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:51.472708" elapsed="0.000201"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:51.473223" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:51.473326" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:51.473062" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.473762" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:51.473504" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:51.474218" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:51.473956" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:51.475014" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:10:51.474784" elapsed="0.000377">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:10:51.475273" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:51.475318" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:51.474419" elapsed="0.000921"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:51.475642" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:51.475415" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:51.475396" elapsed="0.000343"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:51.476503" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.476237" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:51.476575" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:10:51.476751" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:51.475940" elapsed="0.000842"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.476957" elapsed="0.000441"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:51.477692" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:51.477791" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:51.477583" elapsed="0.000234"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.477968" elapsed="0.003711"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:51.482143" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:51.483257" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:51.481854" elapsed="0.001845">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:51.486842" elapsed="0.000386"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:51.487394" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:51.487690" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:51.484597" elapsed="0.003239"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:51.483988" elapsed="0.003894"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:51.472448" elapsed="0.015564">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:52.509292" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:52.509059" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:52.509020" elapsed="0.000434"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:52.510038" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:52.510223" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:52.509723" elapsed="0.000538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:52.510866" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:52.510491" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:52.511331" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:52.511067" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:52.511943" elapsed="0.000206"/>
</kw>
<msg time="2026-04-17T03:10:52.512249" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:52.512295" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:52.511550" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:52.513162" elapsed="0.000140"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:52.514000" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:52.513799" elapsed="0.000752">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:52.513470" elapsed="0.001143"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:52.515129" elapsed="0.000101"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:52.514789" elapsed="0.000486"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:52.512621" elapsed="0.002697"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:52.512392" elapsed="0.002973"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:52.512374" elapsed="0.003016"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:52.516165" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:52.515881" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:52.516240" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:10:52.516396" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:52.515603" elapsed="0.000818"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:52.516581" elapsed="0.000406"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:52.517277" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:52.517379" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:52.517172" elapsed="0.000233"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:52.517555" elapsed="0.002460"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:52.520458" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:52.521921" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:52.520196" elapsed="0.002183">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:52.526077" elapsed="0.000407"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:52.526666" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:52.526973" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:52.523366" elapsed="0.003784"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:52.522791" elapsed="0.004407"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:52.508469" elapsed="0.018815">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:53.548355" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:53.548204" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:53.548175" elapsed="0.000263"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:53.548888" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:53.549012" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:53.548641" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:53.549553" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:53.549238" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:53.550005" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:53.549756" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:53.550679" elapsed="0.000192"/>
</kw>
<msg time="2026-04-17T03:10:53.550973" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:53.551018" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:53.550239" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:53.551903" elapsed="0.000138"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:53.552776" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:53.552557" elapsed="0.000779">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:53.552225" elapsed="0.001176"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:53.553905" elapsed="0.000103"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:53.553574" elapsed="0.000480"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:53.551376" elapsed="0.002754"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:53.551136" elapsed="0.003050"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:53.551114" elapsed="0.003098"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:53.555016" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:53.554737" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:53.555109" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:10:53.555274" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:53.554443" elapsed="0.000856"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:53.555456" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:53.556184" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:53.556357" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:53.556055" elapsed="0.000330"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:53.556538" elapsed="0.002601"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:53.559589" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:53.560816" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:53.559314" elapsed="0.001942">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:53.564521" elapsed="0.000418"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:53.565139" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:53.565452" elapsed="0.000101"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:53.562218" elapsed="0.003387"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:53.561591" elapsed="0.004070"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:53.547734" elapsed="0.018016">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.588000" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:54.587793" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.587749" elapsed="0.000391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.588678" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:54.588858" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.588402" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.589433" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:54.589073" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.589916" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:54.589648" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.590571" elapsed="0.000193"/>
</kw>
<msg time="2026-04-17T03:10:54.590871" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:54.590918" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.590162" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:54.591872" elapsed="0.000149"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.592741" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.592560" elapsed="0.000732">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.592212" elapsed="0.001145"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.593883" elapsed="0.000104"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.593540" elapsed="0.000493"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:54.591265" elapsed="0.002813"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:54.591016" elapsed="0.003158"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.590997" elapsed="0.003206"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:54.594995" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.594721" elapsed="0.000365"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:54.595155" elapsed="0.000036"/>
</return>
<msg time="2026-04-17T03:10:54.595322" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:54.594426" elapsed="0.000922"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.595518" elapsed="0.000486"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.596312" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:54.596424" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.596200" elapsed="0.000253"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.596608" elapsed="0.004816"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.601864" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:54.603321" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.601594" elapsed="0.002181">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:54.606976" elapsed="0.000377"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.607530" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.607899" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:54.604668" elapsed="0.003388"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:54.604118" elapsed="0.004003"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.587185" elapsed="0.021035">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:10:54.608317" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:10:51.459923" elapsed="3.148497">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:51.459505" elapsed="3.148984"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:51.459342" elapsed="3.149188"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:10:51.459168" elapsed="3.149401"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:10:51.027188" elapsed="3.581441"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.611312" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:54.611196" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.611174" elapsed="0.000208"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.616310" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:54.616201" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.616182" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.617409" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:54.616969" elapsed="0.000469"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.617926" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:54.617614" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:10:54.617996" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:10:54.618171" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:10:54.616631" elapsed="0.001612"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.624214" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:54.624086" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.624057" elapsed="0.000226"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.625583" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:54.625449" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.625428" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:54.626139" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.625798" elapsed="0.000369"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.626566" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:54.626327" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.627790" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.627279" elapsed="0.001289">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:10:54.628711" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:10:54.628758" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.626756" elapsed="0.002026"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.629919" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.629518" elapsed="0.001216">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:10:54.630873" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:10:54.630919" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.628959" elapsed="0.001983"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.632044" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.631299" elapsed="0.000845">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:10:54.631018" elapsed="0.001262">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:10:54.630998" elapsed="0.001321">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:54.632512" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:54.632785" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:54.632617" elapsed="0.000342"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:54.632599" elapsed="0.000393"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.633032" elapsed="0.000018"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:54.635224" elapsed="0.000523"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.636109" elapsed="0.000330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.636777" elapsed="0.000256"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:54.634435" elapsed="0.002715"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:54.633333" elapsed="0.003978"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.625131" elapsed="0.012288">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</status>
</kw>
<msg time="2026-04-17T03:10:54.637591" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:54.637645" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.624464" elapsed="0.013210"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.637898" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:54.637767" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.637744" elapsed="0.000237"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.639008" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:54.638900" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.638881" elapsed="0.000196"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.639572" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:54.639720" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.639259" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.640218" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:54.639930" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.640680" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:54.640429" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.641277" elapsed="0.000345"/>
</kw>
<msg time="2026-04-17T03:10:54.641721" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:54.641766" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.640891" elapsed="0.000896"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:54.643000" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.644653" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.644380" elapsed="0.000738">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.643519" elapsed="0.001692"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.646293" elapsed="0.000213"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.645469" elapsed="0.001112"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:54.642197" elapsed="0.004469"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:54.641863" elapsed="0.004854"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.641843" elapsed="0.004898"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:54.647781" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.647253" elapsed="0.000560"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:54.647873" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:10:54.648041" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:54.646955" elapsed="0.001110"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.648246" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.648965" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:54.649065" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.648858" elapsed="0.000248"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.649259" elapsed="0.002379"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.652139" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:54.653440" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.651847" elapsed="0.002013">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:54.657418" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.658376" elapsed="0.000415"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:54.659008" elapsed="0.000193"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:54.654798" elapsed="0.004485"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:54.654255" elapsed="0.005077"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.638644" elapsed="0.020778">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:54.659848" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:54.659934" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:10:54.623734" elapsed="0.036308">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:10:54.660167" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:54.660214" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.618662" elapsed="0.041575"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:54.660587" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:54.660315" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:54.660296" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:54.618510" elapsed="0.042177"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:10:54.618305" elapsed="0.042415"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:10:54.615889" elapsed="0.044901"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:10:54.609264" elapsed="0.051585"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:54.608792" elapsed="0.052097"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:10:51.021813" elapsed="3.639127"/>
</kw>
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:54.665238" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854401df990&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:10:54.664786" elapsed="0.000646"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:10:54.664333" elapsed="0.001181"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:10:54.666735" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:10:54.666956" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:10:54.666551" elapsed="0.000430"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.671726" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:54.667171" elapsed="0.004603"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:10:54.672178" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:10:54.672384" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:10:54.671962" elapsed="0.000447"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.676899" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:54.672574" elapsed="0.004411"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:10:54.666300" elapsed="0.010745"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:10:54.665972" elapsed="0.011132"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:10:54.665718" elapsed="0.011443"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:54.677647" level="INFO">Creating Session using : alias=operational, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x785440193010&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=125</arg>
<arg>max_retries=0</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:10:54.677312" elapsed="0.000447"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="PASS" start="2026-04-17T03:10:54.677926" elapsed="0.000187"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:54.678270" elapsed="0.000176"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:10:54.680898" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:10:54.680977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:10:54.680624" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:54.681179" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:10:54.682614" level="INFO">Logging into '10.30.171.117:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:10:55.051451" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:10:50 UTC 2026

  System load:  0.02               Processes:             107
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.117
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:10:50 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:10:54.682062" elapsed="0.369552"/>
</kw>
<msg time="2026-04-17T03:10:55.051702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:54.681698" elapsed="0.370085"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:10:54.679388" elapsed="0.372511"/>
</kw>
<msg time="2026-04-17T03:10:55.051951" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:54.678978" elapsed="0.373018"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-17T03:10:54.678644" elapsed="0.373427"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.053659" level="INFO">Executing command 'python3 --help'.</msg>
<msg time="2026-04-17T03:10:55.066207" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:10:55.066460" level="INFO">${stdout} = usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_ins...</msg>
<msg time="2026-04-17T03:10:55.066531" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:10:55.066597" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:10:55.053429" elapsed="0.013210"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.068165" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:10:55.067691" elapsed="0.000542"/>
</kw>
<msg time="2026-04-17T03:10:55.068374" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:10:55.068439" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.067000" elapsed="0.001473"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.069405" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:55.068731" elapsed="0.000713"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.070209" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:55.069600" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.069544" elapsed="0.000903"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:10:55.070693" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-17T03:10:55.070540" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.070515" elapsed="0.000318"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.070981" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.070918" elapsed="0.000131"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:55.070894" elapsed="0.000188"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.071455" elapsed="0.000042"/>
</kw>
<msg time="2026-04-17T03:10:55.071705" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>python3 --help</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:10:55.053015" elapsed="0.018729"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:10:55.072006" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-17T03:10:55.071852" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.071824" elapsed="0.000392"/>
</if>
<kw name="Fatal Error" owner="BuiltIn">
<arg>Python 3 is not installed!</arg>
<doc>Stops the whole test execution.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.072512" elapsed="0.000034"/>
</kw>
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="PASS" start="2026-04-17T03:10:55.052482" elapsed="0.020153"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.074577" level="INFO">Executing command 'bash -c 'cd "." &amp;&amp; python -c "import ipaddr"''.</msg>
<msg time="2026-04-17T03:10:55.146376" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:10:55.146648" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:10:55.146710" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:10:55.146769" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:10:55.074303" elapsed="0.072500"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.148650" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:10:55.147850" elapsed="0.000866"/>
</kw>
<msg time="2026-04-17T03:10:55.148854" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:10:55.148914" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.147232" elapsed="0.001714"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.149808" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:55.149204" elapsed="0.000646"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.150548" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:55.149971" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.149939" elapsed="0.000748"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:10:55.150988" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-17T03:10:55.150765" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.150744" elapsed="0.000522"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.151481" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.151398" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:55.151361" elapsed="0.000266"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.151996" elapsed="0.000051"/>
</kw>
<msg time="2026-04-17T03:10:55.152399" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>bash -c 'cd "${target_dir}" &amp;&amp; python -c "import ipaddr"'</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:10:55.073727" elapsed="0.078730"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:10:55.152864" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-17T03:10:55.152632" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.152592" elapsed="0.000452"/>
</if>
<kw name="Put File" owner="SSHLibrary">
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py</arg>
<arg>${target_dir}/</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.153458" elapsed="0.000051"/>
</kw>
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="PASS" start="2026-04-17T03:10:55.073025" elapsed="0.080627"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.189559" level="INFO">[chan 3] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-17T03:10:55.203517" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py' -&gt; '/home/jenkins//play.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:10:55.154015" elapsed="0.049610"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.204690" level="INFO">${timeout} = 560.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER_PREFIX_COUNT_SINGLE} * (${COUNT_PREFIX_COUNT_SINGLE} * 9.0 / 10000 + 20)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:10:55.203946" elapsed="0.000783"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.210640" level="INFO">${bgp_filling_timeout} = 560.0</msg>
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:10:55.205082" elapsed="0.005605"/>
</kw>
<doc>Setup imported resources, SSH-login to tools system,
create HTTP session, put Python tool to tools system.</doc>
<status status="PASS" start="2026-04-17T03:10:51.021439" elapsed="4.189316"/>
</kw>
<test id="s1-s2-t1" name="Check_For_Empty_Ipv4_Topology_Before_Talking" line="79">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.214730" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:55.214500" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.214477" elapsed="0.000337"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:10:55.214302" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.215941" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.215830" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.215811" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.220987" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.220858" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.220840" elapsed="0.000214"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.222158" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:10:55.221697" elapsed="0.000490"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.222653" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:10:55.222352" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:10:55.222723" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:10:55.222886" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:10:55.221307" elapsed="0.001603"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.228737" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.228621" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.228600" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.229983" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.229878" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.229860" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:55.230530" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:55.230225" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.230931" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:55.230717" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.231858" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.231575" elapsed="0.000985">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:10:55.232748" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:10:55.232793" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.231191" elapsed="0.001625"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.233606" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.233353" elapsed="0.000906">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:10:55.234444" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:10:55.234489" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.232991" elapsed="0.001520"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.235510" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.234806" elapsed="0.000825">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:10:55.234586" elapsed="0.001118">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:10:55.234567" elapsed="0.001170">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.235902" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.236149" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:55.235988" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:55.235972" elapsed="0.000252"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.236256" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:55.238816" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:10:55.239028" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:55.237694" elapsed="0.001555"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.239551" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.239886" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:55.237067" elapsed="0.003002"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:55.236531" elapsed="0.003624"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.229581" elapsed="0.010662">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</kw>
<msg time="2026-04-17T03:10:55.240351" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:55.240394" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.228964" elapsed="0.011455"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.240603" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.240496" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.240477" elapsed="0.000189"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.241677" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.241568" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.241547" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.242019" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:55.242136" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:55.241896" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.242577" level="INFO">{1: 13}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:55.242317" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.243017" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:10:55.242772" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:55.243761" elapsed="0.000262"/>
</kw>
<msg time="2026-04-17T03:10:55.244224" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:10:55.244272" level="INFO">${old_connection_index} = 13</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.243392" elapsed="0.000902"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:55.245126" elapsed="0.000190"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.246417" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.245958" elapsed="0.001436">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.245486" elapsed="0.002012"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:10:55.248239" elapsed="0.000281"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.247719" elapsed="0.000885"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:10:55.244597" elapsed="0.004053"/>
</kw>
<status status="PASS" start="2026-04-17T03:10:55.244369" elapsed="0.004330"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.244350" elapsed="0.004374"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:10:55.249608" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:10:55.249293" elapsed="0.000342"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:10:55.249683" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:10:55.249836" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:10:55.248941" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:10:55.250021" elapsed="0.000437"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.250736" level="INFO">index=16
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:10:55.250840" level="INFO">${karaf_connection_object} = index=16
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:10:55.250629" elapsed="0.000238"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:10:55.251015" elapsed="0.002463"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:10:55.253924" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:10:55.255287" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.253655" elapsed="0.002048">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:10:55.269926" elapsed="0.000424"/>
</kw>
<msg time="2026-04-17T03:10:55.270445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:10:55.268544" elapsed="0.002056"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.270766" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.270931" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:10:55.256720" elapsed="0.014323"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:10:55.256011" elapsed="0.015098"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.241077" elapsed="0.030121">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.271571" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.271647" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.228272" elapsed="0.043486">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:10:55.271871" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:55.271915" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.223411" elapsed="0.048528"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.272557" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:55.272021" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.272000" elapsed="0.000688"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:10:55.223227" elapsed="0.049488"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:10:55.222971" elapsed="0.049779"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:10:55.220490" elapsed="0.052320"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:10:55.215535" elapsed="0.057334"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.215012" elapsed="0.057903"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:10:55.211968" elapsed="0.061003"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:55.280390" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.276880" elapsed="0.008701">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.286031" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:55.285746" elapsed="0.000391"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:55.285713" elapsed="0.000461"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.286226" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.276436" elapsed="0.009978">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.286720" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.286821" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.275649" elapsed="0.011316">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:10:55.287230" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:55.287294" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:55.275156" elapsed="0.012173"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:10:55.287569" elapsed="0.036622"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:10:55.325270" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:55.325127" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:55.325085" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:55.325888" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.325504" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:10:55.324673" elapsed="0.001411">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:55.326258" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.274609" elapsed="0.051754">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:55.326537" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.274052" elapsed="0.052597">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.273699" elapsed="0.053047">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:56.341292" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:10:56.336726" elapsed="0.006582">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:56.343648" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:56.343448" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:56.343419" elapsed="0.000312"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:10:56.343769" elapsed="0.000032"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:10:56.335557" elapsed="0.008396">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:56.344175" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:10:56.344244" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:10:56.333893" elapsed="0.010456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:10:56.344508" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:56.344555" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:56.332389" elapsed="0.012201"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:10:56.344772" elapsed="0.030604"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:10:56.376444" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:56.376303" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:56.376278" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:56.377070" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:56.376690" elapsed="0.000478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:10:56.375831" elapsed="0.001534">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:56.377433" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:10:56.330881" elapsed="0.046666">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:56.377726" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:10:56.328892" elapsed="0.048945">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:10:56.327779" elapsed="0.050157">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:57.386067" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:10:57.382616" elapsed="0.005945">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:57.388939" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:57.388707" elapsed="0.000300"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:57.388676" elapsed="0.000363"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:10:57.389084" elapsed="0.000038"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:10:57.382045" elapsed="0.007241">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:57.389525" elapsed="0.000028"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:10:57.389610" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:10:57.381368" elapsed="0.008371">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:10:57.389881" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:57.389937" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:57.380644" elapsed="0.009323"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:10:57.390204" elapsed="0.030844"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:10:57.422276" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:57.422116" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:57.422068" elapsed="0.000293"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:57.423119" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:57.422564" elapsed="0.000647">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:10:57.421604" elapsed="0.001751">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:57.423431" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:10:57.379993" elapsed="0.043564">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:57.423781" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:10:57.379274" elapsed="0.044646">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:10:57.378631" elapsed="0.045409">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:58.435850" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:10:58.432437" elapsed="0.005314">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:58.438060" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:58.437871" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:58.437846" elapsed="0.000314"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:10:58.438196" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:10:58.431355" elapsed="0.006959">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:58.438492" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:10:58.438562" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:10:58.430006" elapsed="0.008659">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:10:58.438782" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:58.438829" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:58.428720" elapsed="0.010134"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:10:58.439082" elapsed="0.026743"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:10:58.466916" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:58.466752" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:58.466722" elapsed="0.000271"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:58.467566" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:58.467190" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:10:58.466281" elapsed="0.001503">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:58.467846" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:10:58.427443" elapsed="0.040502">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:58.468137" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:10:58.426019" elapsed="0.042230">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:10:58.424969" elapsed="0.043375">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:10:59.481371" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:10:59.476452" elapsed="0.006980">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:59.483791" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:10:59.483570" elapsed="0.000306"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:10:59.483538" elapsed="0.000365"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:10:59.483942" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:10:59.475430" elapsed="0.008638">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:59.484273" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:10:59.484340" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:10:59.474219" elapsed="0.010222">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:10:59.484644" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:10:59.484690" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:10:59.472998" elapsed="0.011716"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:10:59.484880" elapsed="0.032852"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:10:59.518749" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:10:59.518613" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:10:59.518588" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:10:59.519363" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:10:59.518978" elapsed="0.000459">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:10:59.518198" elapsed="0.001355">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:10:59.519614" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:10:59.471718" elapsed="0.047994">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:10:59.519927" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:10:59.470366" elapsed="0.049683">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:10:59.469303" elapsed="0.050860">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:00.532541" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:00.527750" elapsed="0.006890">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:00.534971" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:00.534767" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:00.534739" elapsed="0.000315"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:00.535108" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:00.526730" elapsed="0.008527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:00.535573" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:00.535657" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:00.525539" elapsed="0.010229">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:00.535895" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:00.535941" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:00.524372" elapsed="0.011593"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:00.536155" elapsed="0.037263"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:00.574629" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:00.574481" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:00.574455" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:00.575358" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:00.574911" elapsed="0.000527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:00.574011" elapsed="0.001545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:00.575617" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:00.523199" elapsed="0.052519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:00.575895" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:00.521931" elapsed="0.054075">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:00.520968" elapsed="0.055153">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:01.587770" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:01.584270" elapsed="0.006123">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:01.590903" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:01.590626" elapsed="0.000357"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:01.590592" elapsed="0.000427"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:01.591073" elapsed="0.000044"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:01.583313" elapsed="0.007947">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:01.591514" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:01.591611" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:01.581934" elapsed="0.009818">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:01.591912" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:01.591977" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:01.580740" elapsed="0.011271"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:01.592267" elapsed="0.027964"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:01.621343" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:01.621202" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:01.621174" elapsed="0.000243"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:01.621969" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:01.621581" elapsed="0.000467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:01.620713" elapsed="0.001477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:01.622251" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:01.579504" elapsed="0.042844">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:01.622521" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:01.578159" elapsed="0.044488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:01.576983" elapsed="0.045762">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:02.635710" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:02.630646" elapsed="0.007043">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:02.638008" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:02.637814" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:02.637787" elapsed="0.000332"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:02.638186" elapsed="0.000031"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:02.629491" elapsed="0.008880">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:02.638565" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:02.638641" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:02.628268" elapsed="0.010479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:02.638871" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:02.638917" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:02.627046" elapsed="0.011897"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:02.639126" elapsed="0.029001"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:02.669154" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:02.668998" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:02.668974" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:02.669747" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:02.669382" elapsed="0.000440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:02.668584" elapsed="0.001354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:02.670000" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:02.625813" elapsed="0.044302">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:02.670309" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:02.624554" elapsed="0.045865">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:02.623609" elapsed="0.046905">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:03.680794" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:03.677071" elapsed="0.006242">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:03.683665" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:03.683460" elapsed="0.000296"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:03.683431" elapsed="0.000372"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:03.683842" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:03.676443" elapsed="0.007528">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:03.684179" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:03.684250" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:03.675637" elapsed="0.008730">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:03.684491" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:03.684547" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:03.674823" elapsed="0.009748"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:03.684738" elapsed="0.031184"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:03.717026" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:03.716888" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:03.716862" elapsed="0.000254"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:03.717670" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:03.717286" elapsed="0.000479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:03.716448" elapsed="0.001434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:03.717952" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:03.674027" elapsed="0.044025">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:03.718243" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:03.672610" elapsed="0.045757">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:03.671557" elapsed="0.046981">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:04.731741" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:04.726833" elapsed="0.006938">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:04.734087" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:04.733898" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:04.733871" elapsed="0.000319"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:04.734227" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:04.725740" elapsed="0.008616">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:04.734544" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:04.734613" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:04.724453" elapsed="0.010264">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:04.734876" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:04.734924" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:04.723226" elapsed="0.011723"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:04.735163" elapsed="0.028452"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:04.764647" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:04.764507" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:04.764482" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:04.765286" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:04.764881" elapsed="0.000504">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:04.764054" elapsed="0.001450">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:04.765568" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:04.721963" elapsed="0.043706">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:04.765921" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:04.720530" elapsed="0.045532">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:04.719479" elapsed="0.046721">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:05.774046" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:05.770780" elapsed="0.005779">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:05.776929" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:05.776700" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:05.776670" elapsed="0.000404"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:05.777138" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:05.770236" elapsed="0.007054">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:05.777523" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:05.777606" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:05.769562" elapsed="0.008168">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:05.777867" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:05.777922" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:05.768838" elapsed="0.009115"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:05.778182" elapsed="0.031264"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:05.810604" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:05.810471" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:05.810293" elapsed="0.000380"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:05.811224" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:05.810838" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:05.809878" elapsed="0.001534">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:05.811543" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:05.768213" elapsed="0.043432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:05.811825" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:05.767494" elapsed="0.044441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:05.766868" elapsed="0.045165">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:06.824136" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:06.820222" elapsed="0.006843">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:06.827538" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:06.827267" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:06.827231" elapsed="0.000429"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:06.827713" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:06.819212" elapsed="0.008679">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:06.828180" elapsed="0.000035"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:06.828284" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:06.817923" elapsed="0.010514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:06.828616" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:06.828708" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:06.816674" elapsed="0.012083"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:06.829009" elapsed="0.026964"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:06.857285" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:06.857088" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:06.857049" elapsed="0.000325"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:06.857930" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:06.857545" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:06.856484" elapsed="0.001748">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:06.858309" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:06.815481" elapsed="0.042946">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:06.858610" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:06.814089" elapsed="0.044659">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:06.813032" elapsed="0.045830">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:07.871586" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:07.866920" elapsed="0.006692">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:07.873934" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:07.873741" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:07.873713" elapsed="0.000305"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:07.874056" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:07.865917" elapsed="0.008301">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:07.874417" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:07.874486" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:07.864678" elapsed="0.009910">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:07.874707" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:07.874753" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:07.863406" elapsed="0.011371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:07.874942" elapsed="0.030611"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:07.906652" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:07.906517" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:07.906492" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:07.907288" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:07.906888" elapsed="0.000476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:07.906071" elapsed="0.001407">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:07.907538" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:07.861975" elapsed="0.045660">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:07.907811" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:07.860743" elapsed="0.047177">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:07.859761" elapsed="0.048253">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:08.918798" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:08.915293" elapsed="0.006283">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:08.921999" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:08.921743" elapsed="0.000337"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:08.921707" elapsed="0.000435"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:08.922193" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:08.914639" elapsed="0.007726">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:08.922622" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:08.922721" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:08.913804" elapsed="0.009062">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:08.923137" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:08.923237" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:08.912746" elapsed="0.010530"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:08.923517" elapsed="0.029039"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:08.953608" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:08.953471" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:08.953446" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:08.954236" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:08.953841" elapsed="0.000476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:08.953013" elapsed="0.001428">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:08.954504" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:08.911493" elapsed="0.043112">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:08.954784" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:08.910075" elapsed="0.044821">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:08.908938" elapsed="0.046055">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:09.971238" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:09.967051" elapsed="0.006945">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:09.974476" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:09.974183" elapsed="0.000380"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:09.974145" elapsed="0.000462"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:09.974663" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:09.965221" elapsed="0.009635">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:09.975147" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:09.975339" elapsed="0.000028"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:09.963309" elapsed="0.012198">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:09.975705" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:09.975777" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:09.961287" elapsed="0.014529"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:09.976110" elapsed="0.039648"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:10.017164" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:10.017000" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:10.016971" elapsed="0.000299"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:10.018048" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:10.017513" elapsed="0.000668">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:10.016414" elapsed="0.001930">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:10.018414" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:09.959408" elapsed="0.059112">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:10.018754" elapsed="0.000035"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:09.957420" elapsed="0.061506">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:09.955915" elapsed="0.063161">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:11.030293" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:11.025660" elapsed="0.006859">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:11.032858" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:11.032655" elapsed="0.000269"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:11.032624" elapsed="0.000404"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:11.033073" elapsed="0.000035"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:11.024515" elapsed="0.008706">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:11.033442" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:11.033515" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:11.023124" elapsed="0.010497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:11.033750" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:11.033797" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:11.021564" elapsed="0.012257"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:11.034012" elapsed="0.031523"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:11.066633" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:11.066486" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:11.066462" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:11.067260" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:11.066864" elapsed="0.000469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:11.066010" elapsed="0.001436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:11.067508" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:11.020882" elapsed="0.046725">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:11.067793" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:11.020267" elapsed="0.047663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:11.019701" elapsed="0.048327">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:12.078623" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:12.074819" elapsed="0.006234">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:12.081475" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:12.081269" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:12.081239" elapsed="0.000321"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:12.081597" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:12.074161" elapsed="0.007556">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:12.081922" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:12.082009" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:12.073380" elapsed="0.008752">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:12.082259" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:12.082306" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:12.072584" elapsed="0.009746"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:12.082502" elapsed="0.033006"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:12.116623" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:12.116486" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:12.116461" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:12.117256" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:12.116861" elapsed="0.000471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:12.116029" elapsed="0.001436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:12.117529" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:12.071379" elapsed="0.046249">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:12.117804" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:12.069891" elapsed="0.048024">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:12.068881" elapsed="0.049128">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:13.130770" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:13.126688" elapsed="0.007210">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:13.134423" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:13.134112" elapsed="0.000405"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:13.134044" elapsed="0.000513"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:13.134616" elapsed="0.000031"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:13.126040" elapsed="0.008764">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:13.135162" elapsed="0.000041"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:13.135288" elapsed="0.000030"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:13.125200" elapsed="0.010268">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:13.135657" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:13.135785" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:13.124237" elapsed="0.011586"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:13.136065" elapsed="0.037161"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:13.175269" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:13.174965" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:13.174916" elapsed="0.000504"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:13.176577" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:13.175840" elapsed="0.000815">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:13.174080" elapsed="0.002693">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:13.176833" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:13.122816" elapsed="0.054117">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:13.177131" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:13.120310" elapsed="0.056934">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:13.119058" elapsed="0.058360">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:14.189899" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:14.185448" elapsed="0.006387">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:14.192150" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:14.191951" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:14.191925" elapsed="0.000308"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:14.192269" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:14.184432" elapsed="0.007953">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:14.192581" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:14.192660" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:14.183220" elapsed="0.009541">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:14.192885" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:14.192932" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:14.181978" elapsed="0.010979"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:14.193169" elapsed="0.025415"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:14.219763" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:14.219557" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:14.219533" elapsed="0.000300"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:14.220381" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:14.219992" elapsed="0.000462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:14.219115" elapsed="0.001451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:14.220627" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:14.180853" elapsed="0.039872">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:14.220980" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:14.179570" elapsed="0.041543">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:14.178520" elapsed="0.042694">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:15.233978" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:15.229631" elapsed="0.006448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:15.236464" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:15.236241" elapsed="0.000283"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:15.236210" elapsed="0.000340"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:15.236589" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:15.228928" elapsed="0.007794">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:15.236916" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:15.236985" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:15.227752" elapsed="0.009335">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:15.237242" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:15.237318" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:15.226301" elapsed="0.011048"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:15.237557" elapsed="0.038096"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:15.276880" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:15.276732" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:15.276698" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:15.277543" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:15.277148" elapsed="0.000474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:15.276189" elapsed="0.001568">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:15.277899" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:15.224792" elapsed="0.053215">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:15.278208" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:15.223270" elapsed="0.055056">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:15.222180" elapsed="0.056257">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:16.291380" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:16.287367" elapsed="0.006207">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:16.293964" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:16.293719" elapsed="0.000310"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:16.293690" elapsed="0.000367"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:16.294113" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:16.286245" elapsed="0.008016">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:16.294494" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:16.294574" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:16.284832" elapsed="0.009847">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:16.294811" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:16.294869" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:16.283249" elapsed="0.011653"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:16.295086" elapsed="0.032321"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:16.328536" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:16.328398" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:16.328371" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:16.329177" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:16.328779" elapsed="0.000475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:16.327944" elapsed="0.001524">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:16.329553" elapsed="0.000023"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:16.281954" elapsed="0.047710">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:16.329846" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:16.280564" elapsed="0.049394">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:16.279398" elapsed="0.050655">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:17.342324" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:17.337938" elapsed="0.006369">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:17.344610" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:17.344427" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:17.344402" elapsed="0.000289"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:17.344727" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:17.336943" elapsed="0.007899">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:17.345021" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:17.345088" elapsed="0.000034"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:17.335711" elapsed="0.009497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:17.345324" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:17.345371" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:17.334452" elapsed="0.010944"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:17.345568" elapsed="0.026975"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:17.373538" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:17.373403" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:17.373379" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:17.374224" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:17.373768" elapsed="0.000529">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:17.372974" elapsed="0.001435">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:17.374471" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:17.333312" elapsed="0.041259">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:17.374748" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:17.332007" elapsed="0.042852">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:17.330911" elapsed="0.044043">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:18.386893" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:18.382905" elapsed="0.005903">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:18.389149" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:18.388935" elapsed="0.000273"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:18.388907" elapsed="0.000327"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:18.389272" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:18.381915" elapsed="0.007477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:18.389573" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:18.389640" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:18.380687" elapsed="0.009051">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:18.389859" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:18.389905" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:18.379390" elapsed="0.010539"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:18.390168" elapsed="0.029902"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:18.421087" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:18.420953" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:18.420929" elapsed="0.000244"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:18.421704" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:18.421336" elapsed="0.000447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:18.420523" elapsed="0.001377">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:18.421961" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:18.378169" elapsed="0.043890">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:18.422254" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:18.376882" elapsed="0.045484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:18.375860" elapsed="0.046601">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:19.434441" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:19.430250" elapsed="0.006125">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:19.436678" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:19.436494" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:19.436469" elapsed="0.000289"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:19.436795" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:19.429249" elapsed="0.007661">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:19.437104" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:19.437174" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:19.427986" elapsed="0.009286">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:19.437457" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:19.437503" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:19.426746" elapsed="0.010782"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:19.437700" elapsed="0.028171"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:19.466930" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:19.466780" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:19.466755" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:19.467561" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:19.467183" elapsed="0.000456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:19.466363" elapsed="0.001472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:19.467908" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:19.425608" elapsed="0.042404">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:19.468209" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:19.424342" elapsed="0.043981">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:19.423331" elapsed="0.045085">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:20.479027" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:20.475074" elapsed="0.008647">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:20.484512" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:20.484052" elapsed="0.000593"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:20.483996" elapsed="0.000693"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:20.484740" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:20.474451" elapsed="0.010449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:20.485248" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:20.485345" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:20.473665" elapsed="0.011823">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:20.485649" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:20.485713" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:20.472891" elapsed="0.012855"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:20.485975" elapsed="0.029602"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:20.516637" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:20.516502" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:20.516477" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:20.517257" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:20.516870" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:20.516049" elapsed="0.001397">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:20.517505" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:20.471784" elapsed="0.045820">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:20.517785" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:20.470468" elapsed="0.047426">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:20.469355" elapsed="0.048634">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:21.527328" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:21.523818" elapsed="0.006129">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:21.530375" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:21.530174" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:21.530143" elapsed="0.000318"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:21.530499" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:21.523215" elapsed="0.007407">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:21.530808" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:21.530879" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:21.522454" elapsed="0.008529">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:21.531135" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:21.531192" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:21.521694" elapsed="0.009524"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:21.531391" elapsed="0.028583"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:21.561159" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:21.560983" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:21.560956" elapsed="0.000294"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:21.561840" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:21.561452" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:21.560496" elapsed="0.001542">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:21.562118" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:21.520971" elapsed="0.041254">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:21.562405" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:21.519783" elapsed="0.042738">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:21.518798" elapsed="0.043822">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:22.574793" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:22.570651" elapsed="0.006204">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:22.577191" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:22.576979" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:22.576953" elapsed="0.000341"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:22.577343" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:22.569663" elapsed="0.007804">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:22.577694" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:22.577766" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:22.568434" elapsed="0.009436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:22.577990" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:22.578035" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:22.567062" elapsed="0.010997"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:22.578247" elapsed="0.028984"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:22.608356" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:22.608217" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:22.608191" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:22.608986" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:22.608597" elapsed="0.000467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:22.607707" elapsed="0.001493">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:22.609263" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:22.565806" elapsed="0.043556">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:22.609563" elapsed="0.000026"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:22.564550" elapsed="0.045134">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:22.563539" elapsed="0.046245">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:23.622985" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:23.618040" elapsed="0.007545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:23.626000" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:23.625747" elapsed="0.000331"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:23.625714" elapsed="0.000422"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:23.626188" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:23.617017" elapsed="0.009334">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:23.626602" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:23.626697" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:23.615725" elapsed="0.011111">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:23.626994" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:23.627058" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:23.614463" elapsed="0.012647"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:23.627345" elapsed="0.030056"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:23.658404" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:23.658268" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:23.658245" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:23.659007" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:23.658637" elapsed="0.000444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:23.657839" elapsed="0.001374">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:23.659273" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:23.613213" elapsed="0.046158">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:23.659543" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:23.611879" elapsed="0.047773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:23.610872" elapsed="0.048948">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:24.672581" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:24.667948" elapsed="0.008075">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:24.676617" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:24.676277" elapsed="0.000430"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:24.676202" elapsed="0.000559"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:24.676818" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:24.666941" elapsed="0.010067">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:24.677310" elapsed="0.000037"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:24.677438" elapsed="0.000028"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:24.665670" elapsed="0.011939">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:24.677850" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:24.677926" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:24.664420" elapsed="0.013543"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:24.678324" elapsed="0.041106"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:24.721239" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:24.721056" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:24.721028" elapsed="0.000291"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:24.721931" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:24.721501" elapsed="0.000516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:24.719947" elapsed="0.002209">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:24.722237" elapsed="0.000021"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:24.663240" elapsed="0.059105">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:24.722716" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:24.661900" elapsed="0.060939">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:24.660834" elapsed="0.062117">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:25.733769" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:25.729795" elapsed="0.008642">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:25.739185" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:25.738698" elapsed="0.000749"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:25.738645" elapsed="0.000967"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:25.739764" elapsed="0.000044"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:25.729158" elapsed="0.011022">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:25.740744" elapsed="0.000060"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:25.740885" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:25.728320" elapsed="0.012673">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:25.741138" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:25.741186" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:25.727507" elapsed="0.013703"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:25.741379" elapsed="0.026859"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:25.769319" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:25.769183" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:25.769158" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:25.769922" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:25.769553" elapsed="0.000442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:25.768735" elapsed="0.001389">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:25.770256" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:25.726513" elapsed="0.043846">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:25.770538" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:25.725355" elapsed="0.045294">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:25.724174" elapsed="0.046571">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:26.784788" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:26.779663" elapsed="0.007123">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:26.787141" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:26.786917" elapsed="0.000284"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:26.786888" elapsed="0.000340"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:26.787266" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:26.778569" elapsed="0.008820">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:26.787576" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:26.787645" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:26.777205" elapsed="0.010543">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:26.787870" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:26.787917" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:26.775673" elapsed="0.012268"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:26.788124" elapsed="0.037283"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:26.826659" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:26.826480" elapsed="0.000247"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:26.826447" elapsed="0.000313"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:26.827460" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:26.826972" elapsed="0.000597">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:26.825903" elapsed="0.001902">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:26.827889" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:26.774269" elapsed="0.053756">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:26.828281" elapsed="0.000028"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:26.772833" elapsed="0.055592">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:26.771653" elapsed="0.056900">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:27.839550" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:27.835702" elapsed="0.006617">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:27.842687" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:27.842465" elapsed="0.000282"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:27.842433" elapsed="0.000342"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:27.842813" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:27.835028" elapsed="0.007912">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:27.843215" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:27.843298" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:27.834185" elapsed="0.009218">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:27.843534" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:27.843580" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:27.832931" elapsed="0.010673"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:27.843795" elapsed="0.030694"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:27.875616" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:27.875484" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:27.875458" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:27.876233" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:27.875845" elapsed="0.000462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:27.875049" elapsed="0.001371">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:27.876481" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:27.831687" elapsed="0.044893">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:27.876768" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:27.830455" elapsed="0.046426">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:27.829515" elapsed="0.047464">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:28.892063" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:28.886373" elapsed="0.007991">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:28.894698" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:28.894495" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:28.894467" elapsed="0.000312"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:28.894816" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:28.884909" elapsed="0.010029">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:28.895138" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:28.895207" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:28.883289" elapsed="0.012019">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:28.895488" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:28.895537" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:28.881666" elapsed="0.013896"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:28.895729" elapsed="0.036447"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:28.933560" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:28.933401" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:28.933370" elapsed="0.000274"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:28.934307" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:28.933852" elapsed="0.000538">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:28.932818" elapsed="0.001702">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:28.934589" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:28.880320" elapsed="0.054383">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:28.934906" elapsed="0.000026"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:28.878944" elapsed="0.056100">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:28.877892" elapsed="0.057316">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:29.947928" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:29.943325" elapsed="0.006636">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:29.950293" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:29.950083" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:29.950058" elapsed="0.000329"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:29.950426" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:29.942194" elapsed="0.008350">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:29.950721" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:29.950846" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:29.940759" elapsed="0.010191">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:29.951066" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:29.951128" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:29.939579" elapsed="0.011575"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:29.951321" elapsed="0.027156"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:29.979473" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:29.979340" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:29.979315" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:29.980062" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:29.979699" elapsed="0.000454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:29.978908" elapsed="0.001360">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:29.980330" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:29.938443" elapsed="0.041987">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:29.980608" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:29.937172" elapsed="0.043547">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:29.936146" elapsed="0.044671">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:30.995010" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:30.989697" elapsed="0.007303">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:30.997444" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:30.997186" elapsed="0.000321"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:30.997150" elapsed="0.000477"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:30.997671" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:30.988544" elapsed="0.009256">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:30.997992" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:30.998073" elapsed="0.000036"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:30.987060" elapsed="0.011152">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:30.998353" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:30.998402" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:30.985606" elapsed="0.012820"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:30.998595" elapsed="0.032211"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:31.031875" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:31.031734" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:31.031707" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:31.032577" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:31.032136" elapsed="0.000522">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:31.031304" elapsed="0.001474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:31.032839" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:30.984229" elapsed="0.048715">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:31.033160" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:30.982820" elapsed="0.050465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:30.981775" elapsed="0.051654">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:32.045230" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:32.041040" elapsed="0.007403">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:32.049142" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:32.048764" elapsed="0.000490"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:32.048717" elapsed="0.000578"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:32.049354" elapsed="0.000033"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:32.040354" elapsed="0.009253">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:32.049929" elapsed="0.000046"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:32.050066" elapsed="0.000060"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:32.039441" elapsed="0.010829">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:32.050496" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:32.050609" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:32.038447" elapsed="0.012201"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:32.050949" elapsed="0.036859"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:32.088867" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:32.088731" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:32.088705" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:32.089498" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:32.089119" elapsed="0.000481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:32.088301" elapsed="0.001418">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:32.089781" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:32.037154" elapsed="0.052727">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:32.090057" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:32.035514" elapsed="0.054670">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:32.034487" elapsed="0.055794">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:33.101130" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:33.097078" elapsed="0.006363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:33.103748" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:33.103562" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:33.103537" elapsed="0.000294"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:33.103868" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:33.096350" elapsed="0.007635">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:33.104188" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:33.104258" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:33.095481" elapsed="0.008890">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:33.104490" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:33.104538" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:33.094627" elapsed="0.009935"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:33.104735" elapsed="0.028147"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:33.134012" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:33.133875" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:33.133849" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:33.134633" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:33.134260" elapsed="0.000447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:33.133403" elapsed="0.001419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:33.134883" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:33.093608" elapsed="0.041374">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:33.135176" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:33.092142" elapsed="0.043154">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:33.091146" elapsed="0.044322">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:34.143679" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:34.140180" elapsed="0.006058">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:34.146619" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:34.146384" elapsed="0.000303"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:34.146353" elapsed="0.000366"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:34.146765" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:34.139618" elapsed="0.007293">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:34.147166" elapsed="0.000028"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:34.147251" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:34.138927" elapsed="0.008455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:34.147524" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:34.147580" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:34.138246" elapsed="0.009365"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:34.147825" elapsed="0.033487"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:34.182548" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:34.182389" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:34.182359" elapsed="0.000276"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:34.183302" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:34.182839" elapsed="0.000552">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:34.181824" elapsed="0.001707">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:34.183607" elapsed="0.000021"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:34.137560" elapsed="0.046171">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:34.184031" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:34.136826" elapsed="0.047366">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:34.136175" elapsed="0.048141">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:35.193283" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:35.189072" elapsed="0.009709">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:35.199865" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:35.199200" elapsed="0.000858"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:35.199076" elapsed="0.001111"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:35.200305" elapsed="0.000051"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:35.188524" elapsed="0.012144">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:35.201219" elapsed="0.000060"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:35.201394" elapsed="0.000046"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:35.187836" elapsed="0.013831">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:35.202036" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:35.202225" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:35.187132" elapsed="0.015248"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:35.202943" elapsed="0.034359"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:35.238431" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:35.238214" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:35.238189" elapsed="0.000328"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:35.239123" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:35.238709" elapsed="0.000498">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:35.237765" elapsed="0.001563">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:35.239487" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:35.186440" elapsed="0.053153">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:35.239770" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:35.185680" elapsed="0.054201">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:35.185009" elapsed="0.054968">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:36.250899" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:36.246420" elapsed="0.006846">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:36.253642" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:36.253413" elapsed="0.000289"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:36.253380" elapsed="0.000349"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:36.253779" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:36.245584" elapsed="0.008344">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:36.254171" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:36.254253" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:36.244570" elapsed="0.009805">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:36.254542" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:36.254591" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:36.243555" elapsed="0.011060"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:36.254785" elapsed="0.030827"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:36.286801" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:36.286636" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:36.286607" elapsed="0.000276"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:36.287492" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:36.287080" elapsed="0.000488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:36.286086" elapsed="0.001687">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:36.287841" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:36.242596" elapsed="0.045349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:36.288143" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:36.241517" elapsed="0.046742">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:36.240675" elapsed="0.047709">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:37.301018" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:37.296142" elapsed="0.006773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:37.303234" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:37.303034" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:37.303009" elapsed="0.000308"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:37.303353" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:37.295145" elapsed="0.008325">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:37.303648" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:37.303715" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:37.293876" elapsed="0.009940">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:37.303931" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:37.303978" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:37.292700" elapsed="0.011302"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:37.304181" elapsed="0.025542"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:37.330706" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:37.330572" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:37.330548" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:37.331417" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:37.330960" elapsed="0.000530">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:37.330169" elapsed="0.001435">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:37.331664" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:37.291569" elapsed="0.040194">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:37.331938" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:37.290265" elapsed="0.041783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:37.289291" elapsed="0.042871">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:38.344744" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:38.340223" elapsed="0.006413">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:38.346937" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:38.346754" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:38.346728" elapsed="0.000310"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:38.347075" elapsed="0.000034"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:38.339179" elapsed="0.008046">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:38.347442" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:38.347516" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:38.337862" elapsed="0.009769">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:38.347759" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:38.347812" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:38.336658" elapsed="0.011181"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:38.348081" elapsed="0.026863"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:38.375970" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:38.375833" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:38.375807" elapsed="0.000236"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:38.376628" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:38.376228" elapsed="0.000477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:38.375412" elapsed="0.001411">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:38.376885" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:38.335478" elapsed="0.041509">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:38.377186" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:38.334055" elapsed="0.043244">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:38.333034" elapsed="0.044367">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:39.389765" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:39.384991" elapsed="0.006793">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:39.392122" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:39.391923" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:39.391897" elapsed="0.000309"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:39.392242" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:39.384008" elapsed="0.008349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:39.392535" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:39.392601" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:39.382784" elapsed="0.009916">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:39.392874" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:39.392921" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:39.381623" elapsed="0.011323"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:39.393127" elapsed="0.026038"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:39.420227" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:39.420059" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:39.420035" elapsed="0.000267"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:39.420817" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:39.420461" elapsed="0.000429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:39.419638" elapsed="0.001364">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:39.421063" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:39.380510" elapsed="0.040669">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:39.421356" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:39.379234" elapsed="0.042235">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:39.378284" elapsed="0.043280">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:40.432179" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:40.428401" elapsed="0.006533">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:40.435439" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:40.435130" elapsed="0.000449"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:40.435069" elapsed="0.000554"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:40.435682" elapsed="0.000028"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:40.427745" elapsed="0.008121">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:40.436250" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:40.436350" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:40.426685" elapsed="0.009812">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:40.436684" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:40.436756" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:40.425641" elapsed="0.011154"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:40.437044" elapsed="0.028380"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:40.466446" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:40.466311" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:40.466287" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:40.467038" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:40.466677" elapsed="0.000452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:40.465868" elapsed="0.001376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:40.467306" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:40.424594" elapsed="0.042811">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:40.467599" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:40.423376" elapsed="0.044334">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:40.422435" elapsed="0.045370">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:41.476675" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:41.472895" elapsed="0.006441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:41.479864" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:41.479572" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:41.479536" elapsed="0.000448"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:41.480037" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:41.472290" elapsed="0.007931">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:41.480473" elapsed="0.000028"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:41.480559" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:41.471495" elapsed="0.009187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:41.480826" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:41.480880" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:41.470730" elapsed="0.010179"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:41.481142" elapsed="0.036262"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:41.518695" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:41.518529" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:41.518497" elapsed="0.000289"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:41.519486" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:41.518989" elapsed="0.000589">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:41.517969" elapsed="0.001754">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:41.519855" elapsed="0.000021"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:41.470011" elapsed="0.049954">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:41.520159" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:41.469237" elapsed="0.051032">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:41.468529" elapsed="0.051833">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:42.530081" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:42.526871" elapsed="0.005415">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:42.532676" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:42.532432" elapsed="0.000300"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:42.532399" elapsed="0.000361"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:42.532797" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:42.526369" elapsed="0.006552">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:42.533127" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:42.533195" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:42.525602" elapsed="0.007694">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:42.533426" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:42.533473" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:42.524530" elapsed="0.008967"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:42.533662" elapsed="0.037923"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:42.572694" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:42.572554" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:42.572528" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:42.573348" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:42.572936" elapsed="0.000492">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:42.572112" elapsed="0.001433">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:42.573607" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:42.523424" elapsed="0.050280">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:42.573880" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:42.522232" elapsed="0.051757">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:42.521276" elapsed="0.052809">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:43.587711" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:43.582700" elapsed="0.007029">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:43.590172" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:43.589901" elapsed="0.000334"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:43.589857" elapsed="0.000407"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:43.590304" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:43.581543" elapsed="0.008896">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:43.590637" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:43.590705" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:43.580040" elapsed="0.010766">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:43.590944" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:43.590991" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:43.578824" elapsed="0.012191"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:43.591195" elapsed="0.027615"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:43.619810" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:43.619676" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:43.619652" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:43.620456" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:43.620038" elapsed="0.000500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:43.619265" elapsed="0.001386">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:43.620712" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:43.577644" elapsed="0.043168">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:43.620987" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:43.576203" elapsed="0.044909">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:43.575150" elapsed="0.046137">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:44.634805" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:44.629766" elapsed="0.007088">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:44.637211" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:44.636986" elapsed="0.000287"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:44.636960" elapsed="0.000339"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:44.637336" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:44.628753" elapsed="0.008705">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:44.637641" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:44.637724" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:44.627391" elapsed="0.010439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:44.637948" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:44.638004" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:44.626017" elapsed="0.012021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:44.638223" elapsed="0.027931"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:44.667156" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:44.667001" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:44.666977" elapsed="0.000247"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:44.667759" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:44.667384" elapsed="0.000447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:44.666589" elapsed="0.001357">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:44.668007" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:44.624734" elapsed="0.043389">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:44.668372" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:44.623352" elapsed="0.045134">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:44.622252" elapsed="0.046332">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:45.679983" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:45.676042" elapsed="0.006582">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:45.683022" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:45.682765" elapsed="0.000346"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:45.682734" elapsed="0.000421"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:45.683213" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:45.675423" elapsed="0.007963">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:45.683590" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:45.683661" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:45.674606" elapsed="0.009187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:45.683958" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:45.684007" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:45.673744" elapsed="0.010287"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:45.684223" elapsed="0.038765"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:45.724221" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:45.724052" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:45.724012" elapsed="0.000285"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:45.724877" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:45.724475" elapsed="0.000514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:45.723554" elapsed="0.001590">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:45.725298" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:45.672545" elapsed="0.052887">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:45.725626" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:45.671033" elapsed="0.054856">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:45.669801" elapsed="0.056193">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:46.739853" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:46.735271" elapsed="0.006706">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:46.742360" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:46.742136" elapsed="0.000292"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:46.742086" elapsed="0.000370"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:46.742495" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:46.733966" elapsed="0.008658">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:46.742809" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:46.742877" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:46.732577" elapsed="0.010400">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:46.743121" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:46.743170" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:46.731010" elapsed="0.012184"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:46.743382" elapsed="0.045039"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:46.789589" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:46.789449" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:46.789422" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:46.790246" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:46.789830" elapsed="0.000495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:46.788933" elapsed="0.001586">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:46.790582" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:46.729710" elapsed="0.060973">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:46.790859" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:46.728148" elapsed="0.062822">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:46.726895" elapsed="0.064171">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:47.803623" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:47.798797" elapsed="0.006743">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:47.805849" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:47.805663" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:47.805637" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:47.805969" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:47.797809" elapsed="0.008279">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:47.806286" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:47.806353" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:47.796567" elapsed="0.009886">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:47.806571" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:47.806616" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:47.795373" elapsed="0.011267"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:47.806804" elapsed="0.026594"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:47.834572" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:47.834439" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:47.834414" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:47.835175" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:47.834798" elapsed="0.000450">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:47.834005" elapsed="0.001356">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:47.835421" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:47.794247" elapsed="0.041275">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:47.835703" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:47.792891" elapsed="0.042923">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:47.791915" elapsed="0.043995">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:48.848250" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:48.843586" elapsed="0.007219">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:48.851232" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:48.850963" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:48.850931" elapsed="0.000413"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:48.851394" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:48.842602" elapsed="0.008948">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:48.851805" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:48.851900" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:48.841377" elapsed="0.010659">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:48.852318" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:48.852393" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:48.840200" elapsed="0.012229"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:48.852709" elapsed="0.027571"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:48.881283" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:48.881148" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:48.881122" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:48.881885" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:48.881510" elapsed="0.000447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:48.880719" elapsed="0.001351">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:48.882150" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:48.839063" elapsed="0.043187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:48.882426" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:48.837823" elapsed="0.044714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:48.836811" elapsed="0.045823">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:49.893758" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:49.890769" elapsed="0.004957">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:49.896055" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:49.895850" elapsed="0.000284"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:49.895824" elapsed="0.000338"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:49.896229" elapsed="0.000032"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:49.889666" elapsed="0.006736">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:49.896607" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:49.896744" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:49.888393" elapsed="0.008457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:49.896970" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:49.897016" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:49.887158" elapsed="0.009882"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:49.897250" elapsed="0.026677"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:49.924917" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:49.924783" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:49.924759" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:49.925519" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:49.925161" elapsed="0.000432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:49.924378" elapsed="0.001326">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:49.925768" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:49.885922" elapsed="0.039944">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:49.926040" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:49.884584" elapsed="0.041596">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:49.883556" elapsed="0.042722">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:50.937655" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:50.934525" elapsed="0.005082">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:50.939917" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:50.939729" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:50.939703" elapsed="0.000360"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:50.940120" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:50.933368" elapsed="0.006874">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:50.940424" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:50.940491" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:50.932158" elapsed="0.008435">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:50.940709" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:50.940758" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:50.930932" elapsed="0.009852"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:50.940949" elapsed="0.031086"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:50.973065" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:50.972929" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:50.972905" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:50.973772" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:50.973333" elapsed="0.000516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:50.972510" elapsed="0.001460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:50.974046" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:50.929770" elapsed="0.044400">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:50.974349" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:50.928406" elapsed="0.046108">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:50.927327" elapsed="0.047284">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:51.987550" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:51.983118" elapsed="0.009423">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:51.993717" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:51.993085" elapsed="0.000776"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:51.993001" elapsed="0.000924"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:51.994011" elapsed="0.000038"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:51.982001" elapsed="0.012376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:51.994931" elapsed="0.000058"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:51.995137" elapsed="0.000038"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:51.980750" elapsed="0.014630">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:51.995719" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:51.995809" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:51.979435" elapsed="0.016410"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:51.996120" elapsed="0.044803"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:52.042066" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:52.041924" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:52.041894" elapsed="0.000264"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:52.042763" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:52.042334" elapsed="0.000512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:52.041457" elapsed="0.001509">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:52.043026" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:51.978200" elapsed="0.064950">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:52.043328" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:51.976867" elapsed="0.066572">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:51.975717" elapsed="0.067818">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:53.055046" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:53.052103" elapsed="0.004864">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:53.057298" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:53.057111" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:53.057070" elapsed="0.000310"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:53.057417" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:53.051413" elapsed="0.006122">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:53.057716" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:53.057785" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:53.050082" elapsed="0.007803">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:53.058001" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:53.058048" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:53.048821" elapsed="0.009252"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:53.058255" elapsed="0.029692"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:53.089002" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:53.088866" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:53.088840" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:53.089631" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:53.089263" elapsed="0.000443">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:53.088446" elapsed="0.001374">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:53.089882" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:53.047676" elapsed="0.042307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:53.090186" elapsed="0.000026"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:53.046170" elapsed="0.044137">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:53.045089" elapsed="0.045390">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:54.102059" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:54.098543" elapsed="0.005476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:54.104404" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:54.104158" elapsed="0.000308"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:54.104131" elapsed="0.000361"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:54.104529" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:54.097386" elapsed="0.007261">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:54.104835" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:54.104903" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:54.096148" elapsed="0.008855">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:54.105138" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:54.105186" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:54.094865" elapsed="0.010346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:54.105377" elapsed="0.029873"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:54.136299" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:54.136164" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:54.136140" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:54.136885" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:54.136526" elapsed="0.000432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:54.135736" elapsed="0.001334">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:54.137149" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:54.093626" elapsed="0.043624">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:54.137496" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:54.092388" elapsed="0.045221">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:54.091440" elapsed="0.046266">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:55.150369" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:55.146370" elapsed="0.005927">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:55.152615" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:55.152428" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:55.152401" elapsed="0.000297"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:55.152734" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:55.145315" elapsed="0.007538">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:55.153039" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:55.153127" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:55.143894" elapsed="0.009336">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:55.153349" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:55.153405" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:55.142616" elapsed="0.010816"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:55.153601" elapsed="0.030004"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:55.184700" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:55.184564" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:55.184539" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:55.185313" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:55.184933" elapsed="0.000455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:55.184137" elapsed="0.001364">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:55.185634" elapsed="0.000023"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:55.141443" elapsed="0.044311">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:55.185939" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:55.140122" elapsed="0.045930">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:55.138996" elapsed="0.047173">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:56.197547" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:56.193724" elapsed="0.006700">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:56.200864" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:56.200600" elapsed="0.000345"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:56.200564" elapsed="0.000410"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:56.201011" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:56.193014" elapsed="0.008133">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:56.201332" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:56.201405" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:56.191634" elapsed="0.009887">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:56.201641" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:56.201689" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:56.190474" elapsed="0.011240"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:56.201896" elapsed="0.027904"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:56.230797" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:56.230662" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:56.230637" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:56.231408" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:56.231025" elapsed="0.000458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:56.230254" elapsed="0.001415">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:56.231732" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:56.189350" elapsed="0.042480">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:56.232032" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:56.187981" elapsed="0.044178">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:56.186973" elapsed="0.045284">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:57.245267" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:57.240311" elapsed="0.006892">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:57.247529" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:57.247345" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:57.247316" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:57.247648" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:57.239320" elapsed="0.008445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:57.247945" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:57.248018" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:57.237744" elapsed="0.010389">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:57.248250" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:57.248297" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:57.236596" elapsed="0.011725"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:57.248511" elapsed="0.027624"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:57.277136" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:57.276987" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:57.276964" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:57.277793" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:57.277359" elapsed="0.000507">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:57.276585" elapsed="0.001394">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:57.278041" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:57.235447" elapsed="0.042711">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:57.278335" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:57.234217" elapsed="0.044229">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:57.233155" elapsed="0.045388">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:58.291530" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:58.287041" elapsed="0.006636">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:58.294004" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:58.293804" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:58.293774" elapsed="0.000335"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:58.294150" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:58.285931" elapsed="0.008345">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:58.294470" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:58.294541" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:58.284508" elapsed="0.010152">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:58.294793" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:58.294850" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:58.283170" elapsed="0.011706"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:58.295139" elapsed="0.029999"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:58.326185" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:58.326015" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:58.325990" elapsed="0.000265"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:58.326823" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:58.326433" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:58.325597" elapsed="0.001414">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:58.327071" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:58.281893" elapsed="0.045297">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:58.327366" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:58.280403" elapsed="0.047075">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:58.279428" elapsed="0.048146">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:11:59.339980" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:11:59.335785" elapsed="0.006145">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:59.342248" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:11:59.342048" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:11:59.342024" elapsed="0.000306"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:11:59.342367" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:11:59.334778" elapsed="0.007704">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:59.342661" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:11:59.342744" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:11:59.333473" elapsed="0.009374">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:11:59.343023" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:11:59.343075" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:11:59.332121" elapsed="0.011001"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:11:59.343297" elapsed="0.029146"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:11:59.373528" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:11:59.373379" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-17T03:11:59.373354" elapsed="0.000269"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:11:59.374205" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:11:59.373803" elapsed="0.000482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:11:59.372888" elapsed="0.001518">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:11:59.374467" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:11:59.330956" elapsed="0.043610">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:11:59.374745" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:11:59.329693" elapsed="0.045164">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:11:59.328545" elapsed="0.046408">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:00.386087" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:00.382571" elapsed="0.006085">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:00.389067" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:00.388815" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:00.388782" elapsed="0.000420"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:00.389250" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:00.381871" elapsed="0.007630">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:00.389846" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:00.389943" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:00.380564" elapsed="0.009522">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:00.390226" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:00.390272" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:00.379303" elapsed="0.010994"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:00.390464" elapsed="0.031070"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:00.422548" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:00.422411" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:00.422386" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:00.423162" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:00.422782" elapsed="0.000455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:00.421977" elapsed="0.001376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:00.423415" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:00.378163" elapsed="0.045354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:00.423697" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:00.376829" elapsed="0.046979">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:00.375779" elapsed="0.048126">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:01.436247" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:01.432038" elapsed="0.006116">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:01.438551" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:01.438343" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:01.438315" elapsed="0.000320"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:01.438673" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:01.430974" elapsed="0.007822">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:01.438986" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:01.439055" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:01.429646" elapsed="0.009529">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:01.439301" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:01.439347" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:01.428379" elapsed="0.010992"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:01.439537" elapsed="0.035056"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:01.475615" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:01.475478" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:01.475454" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:01.476236" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:01.475847" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:01.475045" elapsed="0.001378">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:01.476483" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:01.427179" elapsed="0.049403">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:01.476757" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:01.425830" elapsed="0.051038">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:01.424821" elapsed="0.052142">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:02.489292" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:02.485080" elapsed="0.006225">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:02.491674" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:02.491446" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:02.491413" elapsed="0.000346"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:02.491797" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:02.484011" elapsed="0.007911">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:02.492133" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:02.492204" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:02.482703" elapsed="0.009604">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:02.492456" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:02.492508" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:02.481399" elapsed="0.011133"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:02.492700" elapsed="0.036768"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:02.530544" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:02.530404" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:02.530377" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:02.531181" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:02.530784" elapsed="0.000477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:02.529937" elapsed="0.001438">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:02.531437" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:02.480170" elapsed="0.051366">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:02.531709" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:02.478854" elapsed="0.052964">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:02.477823" elapsed="0.054088">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:03.543419" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:03.538990" elapsed="0.007221">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:03.546688" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:03.546409" elapsed="0.000361"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:03.546341" elapsed="0.000467"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:03.546859" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:03.538134" elapsed="0.008894">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:03.547286" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:03.547371" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:03.537075" elapsed="0.010421">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:03.547656" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:03.547716" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:03.536186" elapsed="0.011562"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:03.547968" elapsed="0.041006"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:03.590053" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:03.589914" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:03.589887" elapsed="0.000265"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:03.590787" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:03.590324" elapsed="0.000570">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:03.589482" elapsed="0.001547">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:03.591111" elapsed="0.000026"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:03.535450" elapsed="0.055777">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:03.591407" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:03.534152" elapsed="0.057368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:03.533019" elapsed="0.058686">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:04.603320" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:04.599884" elapsed="0.005994">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:04.606312" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:04.606037" elapsed="0.000357"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:04.606004" elapsed="0.000425"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:04.606480" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:04.599264" elapsed="0.007380">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:04.606942" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:04.607038" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:04.597615" elapsed="0.009585">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:04.607329" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:04.607376" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:04.596324" elapsed="0.011076"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:04.607564" elapsed="0.027828"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:04.636385" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:04.636252" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:04.636225" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:04.636971" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:04.636613" elapsed="0.000431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:04.635822" elapsed="0.001353">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:04.637238" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:04.595044" elapsed="0.042294">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:04.637582" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:04.593702" elapsed="0.043994">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:04.592703" elapsed="0.045091">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:05.650347" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:05.646017" elapsed="0.006340">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:05.652698" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:05.652492" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:05.652463" elapsed="0.000322"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:05.652824" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:05.645008" elapsed="0.007944">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:05.653153" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:05.653238" elapsed="0.000027"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:05.643769" elapsed="0.009591">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:05.653488" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:05.653534" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:05.642510" elapsed="0.011047"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:05.653723" elapsed="0.034787"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:05.689582" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:05.689442" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:05.689415" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:05.690237" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:05.689826" elapsed="0.000495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:05.688990" elapsed="0.001448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:05.690571" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:05.641301" elapsed="0.049373">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:05.690850" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:05.639792" elapsed="0.051168">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:05.638682" elapsed="0.052393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:06.701643" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:06.697914" elapsed="0.006482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:06.704701" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:06.704516" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:06.704491" elapsed="0.000291"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:06.704817" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:06.697280" elapsed="0.007655">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:06.705132" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:06.705201" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:06.696459" elapsed="0.008843">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:06.705419" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:06.705465" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:06.695265" elapsed="0.010224"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:06.705654" elapsed="0.026734"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:06.733397" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:06.733264" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:06.733238" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:06.733992" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:06.733625" elapsed="0.000442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:06.732823" elapsed="0.001453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:06.734344" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:06.694153" elapsed="0.040292">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:06.734619" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:06.692878" elapsed="0.041851">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:06.691912" elapsed="0.042911">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:07.746661" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:07.742657" elapsed="0.006024">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:07.748998" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:07.748804" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:07.748778" elapsed="0.000302"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:07.749135" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:07.741664" elapsed="0.007595">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:07.749438" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:07.749518" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:07.740406" elapsed="0.009212">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:07.749741" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:07.749786" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:07.739185" elapsed="0.010626"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:07.749974" elapsed="0.031519"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:07.782659" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:07.782523" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:07.782497" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:07.783282" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:07.782894" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:07.782060" elapsed="0.001414">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:07.783535" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:07.737990" elapsed="0.045646">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:07.783840" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:07.736740" elapsed="0.047216">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:07.735705" elapsed="0.048349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:08.794126" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:08.790670" elapsed="0.005959">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:08.796935" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:08.796746" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:08.796722" elapsed="0.000294"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:08.797052" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:08.790037" elapsed="0.007151">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:08.797371" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:08.797440" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:08.789260" elapsed="0.008280">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:08.797711" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:08.797757" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:08.788459" elapsed="0.009323"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:08.797946" elapsed="0.029105"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:08.828156" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:08.827963" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:08.827939" elapsed="0.000299"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:08.828775" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:08.828409" elapsed="0.000442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:08.827545" elapsed="0.001421">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:08.829028" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:08.787309" elapsed="0.041833">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:08.829330" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:08.785987" elapsed="0.043454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:08.784906" elapsed="0.044631">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:09.842735" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:09.837443" elapsed="0.007315">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:09.845072" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:09.844881" elapsed="0.000291"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:09.844855" elapsed="0.000352"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:09.845274" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:09.836347" elapsed="0.009057">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:09.845594" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:09.845725" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:09.834983" elapsed="0.010852">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:09.845974" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:09.846054" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:09.833777" elapsed="0.012330"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:09.846284" elapsed="0.029851"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:09.877180" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:09.877018" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:09.876995" elapsed="0.000262"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:09.877782" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:09.877416" elapsed="0.000441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:09.876614" elapsed="0.001357">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:09.878031" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:09.832665" elapsed="0.045481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:09.878323" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:09.831365" elapsed="0.047068">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:09.830372" elapsed="0.048156">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:10.890738" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:10.886025" elapsed="0.006756">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:10.893109" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:10.892899" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:10.892875" elapsed="0.000366"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:10.893282" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:10.884925" elapsed="0.008486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:10.893617" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:10.893687" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:10.883729" elapsed="0.010070">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:10.893925" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:10.893972" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:10.882592" elapsed="0.011405"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:10.894210" elapsed="0.029304"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:10.924504" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:10.924370" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:10.924346" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:10.925155" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:10.924728" elapsed="0.000505">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:10.923942" elapsed="0.001405">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:10.925408" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:10.881502" elapsed="0.044004">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:10.925681" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:10.880217" elapsed="0.045574">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:10.879323" elapsed="0.046561">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:11.935961" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:11.932404" elapsed="0.005958">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:11.938765" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:11.938559" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:11.938531" elapsed="0.000317"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:11.938886" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:11.931774" elapsed="0.007235">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:11.939211" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:11.939280" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:11.930984" elapsed="0.008397">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:11.939505" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:11.939552" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:11.930221" elapsed="0.009356"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:11.939742" elapsed="0.034641"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:11.975435" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:11.975297" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:11.975270" elapsed="0.000237"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:11.976052" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:11.975675" elapsed="0.000470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:11.974841" elapsed="0.001422">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:11.976323" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:11.929461" elapsed="0.046961">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:11.976643" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:11.927849" elapsed="0.048931">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:11.926830" elapsed="0.050049">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:12.988393" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:12.984502" elapsed="0.006511">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:12.991359" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:12.991166" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:12.991137" elapsed="0.000313"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:12.991488" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:12.983846" elapsed="0.007763">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:12.991794" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:12.991864" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:12.983041" elapsed="0.008926">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:12.992086" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:12.992151" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:12.981984" elapsed="0.010192"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:12.992344" elapsed="0.033151"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:13.026644" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:13.026492" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:13.026460" elapsed="0.000257"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:13.027287" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:13.026889" elapsed="0.000475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:13.025991" elapsed="0.001491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:13.027544" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:12.980736" elapsed="0.046909">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:13.027822" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:12.979140" elapsed="0.048796">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:12.977919" elapsed="0.050197">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:14.040666" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:14.035765" elapsed="0.006828">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:14.042908" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:14.042715" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:14.042689" elapsed="0.000302"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:14.043028" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:14.034793" elapsed="0.008369">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:14.043357" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:14.043426" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:14.033584" elapsed="0.009947">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:14.043648" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:14.043694" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:14.032433" elapsed="0.011286"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:14.043888" elapsed="0.030279"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:14.075200" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:14.075049" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:14.075024" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:14.075802" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:14.075432" elapsed="0.000446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:14.074635" elapsed="0.001356">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:14.076051" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:14.031289" elapsed="0.044877">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:14.076413" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:14.029971" elapsed="0.046553">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:14.028939" elapsed="0.047679">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:15.089070" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:15.085259" elapsed="0.005746">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:15.091370" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:15.091147" elapsed="0.000290"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:15.091121" elapsed="0.000343"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:15.091504" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:15.084002" elapsed="0.007645">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:15.091829" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:15.091897" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:15.082671" elapsed="0.009326">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:15.092152" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:15.092200" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:15.081364" elapsed="0.010861"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:15.092416" elapsed="0.033837"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:15.127317" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:15.127172" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:15.127143" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:15.127924" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:15.127552" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:15.126719" elapsed="0.001430">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:15.128292" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:15.079937" elapsed="0.048462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:15.128585" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:15.078630" elapsed="0.050070">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:15.077522" elapsed="0.051275">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:16.140607" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:16.136437" elapsed="0.007282">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:16.144041" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:16.143851" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:16.143824" elapsed="0.000317"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:16.144196" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:16.135728" elapsed="0.008595">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:16.144545" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:16.144618" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:16.134324" elapsed="0.010400">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:16.144843" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:16.144906" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:16.133132" elapsed="0.011798"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:16.145140" elapsed="0.033696"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:16.179930" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:16.179791" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:16.179764" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:16.180584" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:16.180186" elapsed="0.000481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:16.179332" elapsed="0.001527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:16.180922" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:16.131965" elapsed="0.049059">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:16.181217" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:16.130683" elapsed="0.050647">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:16.129661" elapsed="0.051765">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:17.193734" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:17.189504" elapsed="0.006141">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:17.195946" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:17.195761" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:17.195737" elapsed="0.000289"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:17.196063" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:17.188506" elapsed="0.007689">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:17.196373" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:17.196440" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:17.187277" elapsed="0.009264">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:17.196655" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:17.196705" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:17.185984" elapsed="0.010746"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:17.196900" elapsed="0.028073"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:17.225970" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:17.225837" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:17.225812" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:17.226648" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:17.226216" elapsed="0.000510">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:17.225426" elapsed="0.001465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:17.226954" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:17.184836" elapsed="0.042219">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:17.227248" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:17.183385" elapsed="0.043974">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:17.182324" elapsed="0.045130">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:18.239926" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:18.235045" elapsed="0.006792">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:18.242167" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:18.241960" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:18.241933" elapsed="0.000318"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:18.242289" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:18.234060" elapsed="0.008348">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:18.242586" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:18.242654" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:18.232851" elapsed="0.009903">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:18.242872" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:18.242918" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:18.231676" elapsed="0.011267"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:18.243436" elapsed="0.034396"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:18.279002" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:18.278862" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:18.278834" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:18.279681" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:18.279301" elapsed="0.000473">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:18.278368" elapsed="0.001527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:18.279956" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:18.230521" elapsed="0.049534">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:18.280250" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:18.229274" elapsed="0.051102">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:18.228325" elapsed="0.052170">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:19.293560" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:19.288553" elapsed="0.006985">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:19.295842" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:19.295656" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:19.295631" elapsed="0.000294"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:19.295961" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:19.287502" elapsed="0.008574">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:19.296277" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:19.296346" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:19.286055" elapsed="0.010392">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:19.296630" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:19.296678" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:19.284799" elapsed="0.011904"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:19.296872" elapsed="0.030865"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:19.328732" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:19.328599" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:19.328574" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:19.329336" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:19.328959" elapsed="0.000449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:19.328192" elapsed="0.001328">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:19.329580" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:19.283663" elapsed="0.046016">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:19.329854" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:19.282300" elapsed="0.047663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:19.281356" elapsed="0.048701">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:20.342763" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:20.338072" elapsed="0.006596">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:20.344992" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:20.344793" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:20.344764" elapsed="0.000310"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:20.345128" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:20.337069" elapsed="0.008179">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:20.345499" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:20.345567" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:20.335861" elapsed="0.009809">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:20.345792" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:20.345840" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:20.334633" elapsed="0.011232"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:20.346191" elapsed="0.032881"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:20.380180" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:20.380025" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:20.379999" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:20.380784" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:20.380412" elapsed="0.000448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:20.379557" elapsed="0.001418">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:20.381035" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:20.333352" elapsed="0.047797">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:20.381325" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:20.332071" elapsed="0.049364">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:20.330962" elapsed="0.050567">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:21.394478" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:21.389665" elapsed="0.006779">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:21.396823" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:21.396630" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:21.396603" elapsed="0.000304"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:21.396944" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:21.388469" elapsed="0.008606">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:21.397276" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:21.397345" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:21.387185" elapsed="0.010262">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:21.397566" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:21.397612" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:21.385790" elapsed="0.011848"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:21.397801" elapsed="0.028528"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:21.427314" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:21.427180" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:21.427157" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:21.427896" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:21.427541" elapsed="0.000427">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:21.426757" elapsed="0.001322">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:21.428190" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:21.384654" elapsed="0.043637">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:21.428465" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:21.383341" elapsed="0.045233">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:21.382410" elapsed="0.046258">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:22.436674" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:22.433203" elapsed="0.005999">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:22.439578" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:22.439345" elapsed="0.000302"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:22.439314" elapsed="0.000365"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:22.439725" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:22.432650" elapsed="0.007218">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:22.440114" elapsed="0.000028"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:22.440200" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:22.431924" elapsed="0.008404">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:22.440508" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:22.440568" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:22.431250" elapsed="0.009350"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:22.440815" elapsed="0.032979"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:22.474782" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:22.474649" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:22.474625" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:22.475385" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:22.475008" elapsed="0.000450">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:22.474243" elapsed="0.001326">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:22.475631" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:22.430618" elapsed="0.045110">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:22.475904" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:22.429906" elapsed="0.046108">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:22.429302" elapsed="0.046825">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:23.486686" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:23.483157" elapsed="0.006289">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:23.489865" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:23.489609" elapsed="0.000316"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:23.489576" elapsed="0.000374"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:23.489986" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:23.482507" elapsed="0.007610">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:23.490304" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:23.490372" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:23.481639" elapsed="0.008832">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:23.490585" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:23.490632" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:23.480441" elapsed="0.010215"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:23.490820" elapsed="0.026814"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:23.518627" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:23.518492" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:23.518469" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:23.519222" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:23.518853" elapsed="0.000443">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:23.518065" elapsed="0.001340">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:23.519464" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:23.479341" elapsed="0.040221">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:23.519735" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:23.478054" elapsed="0.041789">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:23.477043" elapsed="0.042965">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:24.529051" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:24.525406" elapsed="0.006482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:24.532355" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:24.532061" elapsed="0.000357"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:24.532021" elapsed="0.000425"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:24.532483" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:24.524711" elapsed="0.007898">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:24.532799" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:24.532869" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:24.523874" elapsed="0.009104">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:24.533125" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:24.533207" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:24.523038" elapsed="0.010195"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:24.533482" elapsed="0.043168"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:24.578162" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:24.577947" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:24.577909" elapsed="0.000366"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:24.579054" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:24.578522" elapsed="0.000663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:24.577340" elapsed="0.002014">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:24.579448" elapsed="0.000027"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:24.522313" elapsed="0.057290">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:24.579969" elapsed="0.000036"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:24.521509" elapsed="0.058659">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:24.520723" elapsed="0.059600">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:25.591196" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:25.587611" elapsed="0.006184">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:25.594250" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:25.593966" elapsed="0.000363"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:25.593924" elapsed="0.000440"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:25.594416" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:25.586995" elapsed="0.007584">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:25.594827" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:25.594919" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:25.586241" elapsed="0.008816">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:25.595243" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:25.595306" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:25.584943" elapsed="0.010397"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:25.595570" elapsed="0.032494"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:25.629109" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:25.628961" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:25.628936" elapsed="0.000244"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:25.629728" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:25.629342" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:25.628545" elapsed="0.001372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:25.630053" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:25.583818" elapsed="0.046354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:25.630350" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:25.582539" elapsed="0.047920">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:25.581289" elapsed="0.049265">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:26.641369" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:26.637394" elapsed="0.007274">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:26.645366" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:26.644925" elapsed="0.000568"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:26.644871" elapsed="0.000678"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:26.645628" elapsed="0.000037"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:26.636757" elapsed="0.009204">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:26.646443" elapsed="0.000053"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:26.646601" elapsed="0.000048"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:26.635961" elapsed="0.010883">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:26.647044" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:26.647109" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:26.635175" elapsed="0.011960"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:26.647302" elapsed="0.031333"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:26.679683" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:26.679543" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:26.679517" elapsed="0.000238"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:26.680323" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:26.679921" elapsed="0.000483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:26.679109" elapsed="0.001519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:26.680707" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:26.633911" elapsed="0.046902">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:26.681033" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:26.632543" elapsed="0.048633">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:26.631526" elapsed="0.049773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:27.692980" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:27.690146" elapsed="0.004827">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:27.695307" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:27.695099" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:27.695069" elapsed="0.000334"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:27.695439" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:27.688904" elapsed="0.006653">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:27.695733" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:27.695799" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:27.687577" elapsed="0.008319">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:27.696013" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:27.696058" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:27.686265" elapsed="0.009817"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:27.696262" elapsed="0.031717"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:27.729066" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:27.728929" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:27.728904" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:27.729687" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:27.729314" elapsed="0.000449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:27.728516" elapsed="0.001362">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:27.729940" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:27.685029" elapsed="0.045008">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:27.730232" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:27.683718" elapsed="0.046626">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:27.682607" elapsed="0.047831">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:28.742302" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:28.738763" elapsed="0.006341">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:28.745640" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:28.745300" elapsed="0.000425"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:28.745264" elapsed="0.000499"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:28.745814" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:28.738130" elapsed="0.007850">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:28.746207" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:28.746277" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:28.736663" elapsed="0.009715">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:28.746559" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:28.746608" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:28.735408" elapsed="0.011225"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:28.746798" elapsed="0.034266"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:28.782329" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:28.782179" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:28.782148" elapsed="0.000253"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:28.782980" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:28.782577" elapsed="0.000480">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:28.781638" elapsed="0.001558">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:28.783259" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:28.734094" elapsed="0.049266">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:28.783549" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:28.732570" elapsed="0.051110">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:28.731470" elapsed="0.052318">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:29.795320" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:29.791429" elapsed="0.006683">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:29.798567" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:29.798302" elapsed="0.000347"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:29.798262" elapsed="0.000422"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:29.798724" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:29.790772" elapsed="0.008079">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:29.799044" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:29.799192" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:29.789873" elapsed="0.009425">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:29.799420" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:29.799464" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:29.788574" elapsed="0.010914"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:29.799654" elapsed="0.032360"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:29.833053" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:29.832918" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:29.832894" elapsed="0.000255"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:29.833689" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:29.833314" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:29.832486" elapsed="0.001395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:29.833941" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:29.787366" elapsed="0.046674">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:29.834232" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:29.785895" elapsed="0.048449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:29.784806" elapsed="0.049634">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:30.848396" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:30.843285" elapsed="0.007204">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:30.850845" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:30.850631" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:30.850603" elapsed="0.000402"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:30.851048" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:30.842284" elapsed="0.008911">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:30.851386" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:30.851455" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:30.840989" elapsed="0.010565">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:30.851681" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:30.851729" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:30.839780" elapsed="0.011975"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:30.851921" elapsed="0.030957"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:30.883933" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:30.883798" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:30.883773" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:30.884559" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:30.884184" elapsed="0.000450">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:30.883366" elapsed="0.001384">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:30.884810" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:30.838584" elapsed="0.046323">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:30.885081" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:30.836993" elapsed="0.048215">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:30.835840" elapsed="0.049463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:31.897184" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:31.893223" elapsed="0.006675">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:31.900355" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:31.900162" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:31.900107" elapsed="0.000332"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:31.900477" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:31.892583" elapsed="0.008013">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:31.900775" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:31.900845" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:31.891524" elapsed="0.009456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:31.901145" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:31.901194" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:31.890102" elapsed="0.011118"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:31.901416" elapsed="0.030110"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:31.932587" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:31.932450" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:31.932424" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:31.933216" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:31.932816" elapsed="0.000476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:31.931965" elapsed="0.001441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:31.933467" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:31.888799" elapsed="0.044768">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:31.933742" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:31.887339" elapsed="0.046515">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:31.886231" elapsed="0.047718">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:32.944952" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:32.941289" elapsed="0.006029">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:32.947659" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:32.947452" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:32.947424" elapsed="0.000323"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:32.947786" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:32.940633" elapsed="0.007273">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:32.948085" elapsed="0.000038"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:32.948170" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:32.939793" elapsed="0.008476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:32.948391" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:32.948436" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:32.938954" elapsed="0.009506"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:32.948624" elapsed="0.030876"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:32.980523" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:32.980388" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:32.980363" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:32.981126" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:32.980753" elapsed="0.000447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:32.979949" elapsed="0.001362">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:32.981371" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:32.938210" elapsed="0.043260">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:32.981644" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:32.936730" elapsed="0.045025">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:32.935676" elapsed="0.046241">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:33.994343" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:33.990979" elapsed="0.005431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:33.996710" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:33.996527" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:33.996502" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:33.996834" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:33.989929" elapsed="0.007020">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:33.997144" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:33.997222" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:33.988548" elapsed="0.008779">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:33.997441" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:33.997487" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:33.987295" elapsed="0.010217"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:33.997676" elapsed="0.028882"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:34.027567" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:34.027434" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:34.027409" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:34.028172" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:34.027795" elapsed="0.000450">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:34.027004" elapsed="0.001351">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:34.028415" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:33.985474" elapsed="0.043037">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:34.028753" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:33.984049" elapsed="0.044817">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:33.983050" elapsed="0.045912">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:35.038962" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:35.035433" elapsed="0.006078">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:35.041826" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:35.041628" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:35.041603" elapsed="0.000304"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:35.041944" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:35.034813" elapsed="0.007247">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:35.042255" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:35.042328" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:35.034046" elapsed="0.008525">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:35.042685" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:35.042731" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:35.033307" elapsed="0.009448"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:35.042925" elapsed="0.035038"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:35.079147" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:35.078944" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:35.078912" elapsed="0.000311"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:35.079768" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:35.079390" elapsed="0.000453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:35.078470" elapsed="0.001490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:35.080095" elapsed="0.000034"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:35.032138" elapsed="0.048081">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:35.080431" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:35.030867" elapsed="0.049698">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:35.029900" elapsed="0.050774">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:36.089874" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:36.086176" elapsed="0.005613">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:36.092121" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:36.091908" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:36.091883" elapsed="0.000323"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:36.092243" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:36.085507" elapsed="0.006857">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:36.092547" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:36.092614" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:36.084659" elapsed="0.008055">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:36.092881" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:36.092929" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:36.083856" elapsed="0.009098"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:36.093137" elapsed="0.029687"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:36.123832" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:36.123698" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:36.123673" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:36.124441" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:36.124059" elapsed="0.000456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:36.123283" elapsed="0.001411">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:36.124758" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:36.083119" elapsed="0.041739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:36.125034" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:36.082268" elapsed="0.042917">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:36.081576" elapsed="0.043708">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:37.137549" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:37.132744" elapsed="0.006680">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:37.139756" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:37.139543" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:37.139518" elapsed="0.000320"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:37.139875" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:37.131742" elapsed="0.008252">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:37.140192" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:37.140261" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:37.130509" elapsed="0.009851">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:37.140482" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:37.140527" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:37.129364" elapsed="0.011187"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:37.140717" elapsed="0.028999"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:37.170718" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:37.170588" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:37.170564" elapsed="0.000223"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:37.171415" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:37.170944" elapsed="0.000548">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:37.170178" elapsed="0.001427">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:37.171666" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:37.128273" elapsed="0.043492">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:37.171958" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:37.126993" elapsed="0.045076">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:37.126053" elapsed="0.046129">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:38.183119" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:38.179625" elapsed="0.006243">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:38.186316" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:38.186037" elapsed="0.000361"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:38.186002" elapsed="0.000434"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:38.186486" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:38.178983" elapsed="0.007667">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:38.186903" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:38.186996" elapsed="0.000033"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:38.178231" elapsed="0.008939">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:38.187334" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:38.187397" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:38.177406" elapsed="0.010024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:38.187725" elapsed="0.034830"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:38.223736" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:38.223447" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:38.223421" elapsed="0.000384"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:38.224369" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:38.223965" elapsed="0.000481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:38.223004" elapsed="0.001559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:38.224623" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:38.175923" elapsed="0.048799">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:38.224927" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:38.174443" elapsed="0.050600">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:38.173293" elapsed="0.051893">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:39.236371" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:39.232771" elapsed="0.006377">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:39.239474" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:39.239275" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:39.239248" elapsed="0.000311"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:39.239596" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:39.232029" elapsed="0.007688">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:39.239928" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:39.240001" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:39.231121" elapsed="0.009000">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:39.240312" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:39.240364" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:39.230077" elapsed="0.010313"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:39.240562" elapsed="0.036279"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:39.278184" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:39.278018" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:39.277987" elapsed="0.000272"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:39.278876" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:39.278429" elapsed="0.000527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:39.277425" elapsed="0.001649">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:39.279157" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:39.228732" elapsed="0.050527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:39.279435" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:39.227275" elapsed="0.052277">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:39.226177" elapsed="0.053472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:40.288892" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:40.285005" elapsed="0.006544">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:40.292025" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:40.291725" elapsed="0.000412"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:40.291686" elapsed="0.000497"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:40.292242" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:40.284347" elapsed="0.008079">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:40.292748" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:40.292834" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:40.283533" elapsed="0.009457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:40.293187" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:40.293258" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:40.282688" elapsed="0.010609"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:40.293550" elapsed="0.043274"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:40.338245" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:40.338088" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:40.338062" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:40.338873" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:40.338488" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:40.337655" elapsed="0.001411">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:40.339147" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:40.281967" elapsed="0.057282">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:40.339426" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:40.281088" elapsed="0.058448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:40.280359" elapsed="0.059272">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:41.350827" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:41.347591" elapsed="0.005188">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:41.353209" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:41.352978" elapsed="0.000290"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:41.352949" elapsed="0.000345"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:41.353340" elapsed="0.000033"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:41.346637" elapsed="0.006866">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:41.353697" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:41.353767" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:41.345273" elapsed="0.008594">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:41.353997" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:41.354044" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:41.343983" elapsed="0.010086"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:41.354254" elapsed="0.044051"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:41.399479" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:41.399295" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:41.399269" elapsed="0.000285"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:41.400146" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:41.399724" elapsed="0.000516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:41.398828" elapsed="0.001531">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:41.400420" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:41.342731" elapsed="0.057787">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:41.400694" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:41.341485" elapsed="0.059336">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:41.340524" elapsed="0.060402">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:42.412206" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:42.408682" elapsed="0.005731">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:42.414745" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:42.414541" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:42.414510" elapsed="0.000334"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:42.414882" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:42.407684" elapsed="0.007331">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:42.415227" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:42.415300" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:42.406486" elapsed="0.008922">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:42.415531" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:42.415580" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:42.405303" elapsed="0.010302"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:42.415775" elapsed="0.029659"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:42.446481" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:42.446344" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:42.446319" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:42.447115" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:42.446719" elapsed="0.000474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:42.445882" elapsed="0.001445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:42.447391" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:42.404146" elapsed="0.043349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:42.447675" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:42.402758" elapsed="0.045031">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:42.401793" elapsed="0.046096">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:43.460588" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:43.456003" elapsed="0.006538">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:43.462854" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:43.462664" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:43.462639" elapsed="0.000299"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:43.462976" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:43.454988" elapsed="0.008123">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:43.463303" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:43.463374" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:43.453759" elapsed="0.009717">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:43.463597" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:43.463646" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:43.452510" elapsed="0.011161"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:43.463840" elapsed="0.029615"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:43.494513" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:43.494380" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:43.494355" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:43.495167" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:43.494745" elapsed="0.000508">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:43.493939" elapsed="0.001430">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:43.495429" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:43.451366" elapsed="0.044161">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:43.495702" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:43.450022" elapsed="0.045790">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:43.448833" elapsed="0.047147">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:44.507352" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:44.503634" elapsed="0.006290">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:44.510499" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:44.510213" elapsed="0.000368"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:44.510168" elapsed="0.000449"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:44.510657" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:44.502983" elapsed="0.007798">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:44.510977" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:44.511045" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:44.501785" elapsed="0.009385">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:44.511294" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:44.511339" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:44.500468" elapsed="0.010896"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:44.511526" elapsed="0.041580"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:44.554308" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:44.554054" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:44.554028" elapsed="0.000354"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:44.554955" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:44.554554" elapsed="0.000482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:44.553613" elapsed="0.001563">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:44.555240" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:44.499255" elapsed="0.056085">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:44.555589" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:44.497877" elapsed="0.057825">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:44.496883" elapsed="0.058914">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:45.566684" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:45.563133" elapsed="0.006296">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:45.569937" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:45.569602" elapsed="0.000429"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:45.569560" elapsed="0.000508"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:45.570143" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:45.562400" elapsed="0.007917">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:45.570579" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:45.570675" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:45.561143" elapsed="0.009630">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:45.570890" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:45.570936" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:45.559952" elapsed="0.011008"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:45.571144" elapsed="0.029027"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:45.601193" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:45.601038" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:45.601014" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:45.601789" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:45.601425" elapsed="0.000436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:45.600613" elapsed="0.001404">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:45.602171" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:45.558835" elapsed="0.043440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:45.602451" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:45.557560" elapsed="0.045001">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:45.556621" elapsed="0.046035">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:46.613647" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:46.610211" elapsed="0.006230">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:46.616907" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:46.616620" elapsed="0.000370"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:46.616581" elapsed="0.000447"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:46.617081" elapsed="0.000084"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:46.609463" elapsed="0.007860">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:46.617657" elapsed="0.000035"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:46.617741" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:46.608215" elapsed="0.009634">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:46.617977" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:46.618022" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:46.606979" elapsed="0.011067"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:46.618229" elapsed="0.030740"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:46.650131" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:46.649972" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:46.649945" elapsed="0.000262"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:46.650760" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:46.650373" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:46.649483" elapsed="0.001539">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:46.651085" elapsed="0.000034"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:46.605760" elapsed="0.045445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:46.651381" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:46.604484" elapsed="0.047032">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:46.603527" elapsed="0.048109">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:47.660527" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:47.657021" elapsed="0.005729">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:47.663301" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:47.662945" elapsed="0.000444"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:47.662897" elapsed="0.000535"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:47.663491" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:47.656383" elapsed="0.007288">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:47.663956" elapsed="0.000035"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:47.664085" elapsed="0.000041"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:47.655538" elapsed="0.008714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:47.664446" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:47.664513" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:47.654731" elapsed="0.009818"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:47.664780" elapsed="0.047213"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:47.713678" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:47.713484" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:47.713444" elapsed="0.000346"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:47.714622" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:47.714036" elapsed="0.000704">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:47.712808" elapsed="0.002103">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:47.715007" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:47.653966" elapsed="0.061211">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:47.715417" elapsed="0.000033"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:47.653158" elapsed="0.062423">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:47.652418" elapsed="0.063310">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:48.723342" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:48.720272" elapsed="0.005633">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:48.726360" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:48.726073" elapsed="0.000365"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:48.726037" elapsed="0.000437"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:48.726524" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:48.719807" elapsed="0.006899">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:48.727010" elapsed="0.000041"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:48.727166" elapsed="0.000033"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:48.719244" elapsed="0.008094">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:48.727574" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:48.727640" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:48.718602" elapsed="0.009071"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:48.727918" elapsed="0.037798"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:48.767222" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:48.767012" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:48.766976" elapsed="0.000354"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:48.768046" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:48.767529" elapsed="0.000644">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:48.766373" elapsed="0.001969">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:48.768435" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:48.718039" elapsed="0.050542">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:48.768822" elapsed="0.000033"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:48.717190" elapsed="0.051786">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:48.716470" elapsed="0.052664">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:49.781863" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:49.777826" elapsed="0.006351">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:49.784543" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:49.784322" elapsed="0.000280"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:49.784285" elapsed="0.000344"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:49.784669" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:49.776869" elapsed="0.007931">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:49.784989" elapsed="0.000044"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:49.785161" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:49.775663" elapsed="0.009608">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:49.785402" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:49.785450" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:49.774366" elapsed="0.011109"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:49.785643" elapsed="0.038860"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:49.825618" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:49.825484" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:49.825459" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:49.826248" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:49.825860" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:49.824974" elapsed="0.001464">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:49.826500" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:49.772887" elapsed="0.053712">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:49.826775" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:49.771401" elapsed="0.055485">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:49.770209" elapsed="0.056774">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:50.837404" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:50.833728" elapsed="0.006253">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:50.840319" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:50.840122" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:50.840080" elapsed="0.000378"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:50.840501" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:50.833118" elapsed="0.007506">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:50.840807" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:50.840874" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:50.832258" elapsed="0.008722">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:50.841114" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:50.841164" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:50.831292" elapsed="0.009897"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:50.841355" elapsed="0.038083"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:50.880508" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:50.880372" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:50.880347" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:50.881159" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:50.880745" elapsed="0.000505">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:50.879917" elapsed="0.001453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:50.881432" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:50.830076" elapsed="0.051454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:50.881706" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:50.828817" elapsed="0.052999">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:50.827825" elapsed="0.054093">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:51.893769" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:51.890051" elapsed="0.008326">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:51.899339" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:51.898782" elapsed="0.000695"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:51.898711" elapsed="0.000825"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:51.899618" elapsed="0.000037"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:51.889331" elapsed="0.010556">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:51.900346" elapsed="0.000052"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:51.900504" elapsed="0.000036"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:51.887933" elapsed="0.012798">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:51.901126" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:51.901242" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:51.886660" elapsed="0.014638"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:51.901679" elapsed="0.032874"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:51.935588" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:51.935452" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:51.935425" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:51.936354" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:51.935821" elapsed="0.000613">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:51.935005" elapsed="0.001549">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:51.936614" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:51.885471" elapsed="0.051241">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:51.936887" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:51.883810" elapsed="0.053202">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:51.882815" elapsed="0.054307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:52.949405" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:52.945893" elapsed="0.005614">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:52.951818" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:52.951630" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:52.951604" elapsed="0.000296"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:52.951938" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:52.944767" elapsed="0.007290">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:52.952258" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:52.952326" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:52.943337" elapsed="0.009090">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:52.952548" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:52.952594" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:52.941976" elapsed="0.010642"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:52.952782" elapsed="0.032592"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:52.986405" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:52.986272" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:52.986247" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:52.987060" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:52.986681" elapsed="0.000495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:52.985823" elapsed="0.001500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:52.987401" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:52.940772" elapsed="0.046758">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:52.987757" elapsed="0.000029"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:52.939199" elapsed="0.048710">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:52.938071" elapsed="0.050071">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:54.002815" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:53.998378" elapsed="0.006398">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:54.005132" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:54.004904" elapsed="0.000287"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:54.004876" elapsed="0.000342"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:54.005254" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:53.997329" elapsed="0.008046">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:54.005562" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:54.005630" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:53.995893" elapsed="0.009838">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:54.005854" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:54.005901" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:53.993937" elapsed="0.011989"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:54.006106" elapsed="0.031451"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:54.038593" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:54.038437" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:54.038412" elapsed="0.000251"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:54.039208" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:54.038821" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:54.037997" elapsed="0.001398">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:54.039456" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:53.992417" elapsed="0.047137">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:54.039819" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:53.990407" elapsed="0.049526">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:53.989236" elapsed="0.050794">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:55.048232" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:55.044956" elapsed="0.006058">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:55.051711" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:55.051293" elapsed="0.000537"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:55.051236" elapsed="0.000647"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:55.051947" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:55.044450" elapsed="0.007714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:55.052459" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:55.052563" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:55.043842" elapsed="0.008886">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:55.052928" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:55.052997" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:55.043186" elapsed="0.009846"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:55.053318" elapsed="0.038548"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:55.092994" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:55.092840" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:55.092808" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:55.093665" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:55.093252" elapsed="0.000491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:55.092384" elapsed="0.001476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:55.094008" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:55.042451" elapsed="0.051681">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:55.094313" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:55.041597" elapsed="0.052831">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:55.040794" elapsed="0.053733">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:56.105171" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.101394" elapsed="0.006206">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.107925" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.107727" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.107700" elapsed="0.000309"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.108048" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.100764" elapsed="0.007419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.108365" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.108432" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.099969" elapsed="0.008564">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:56.108654" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.108699" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.099169" elapsed="0.009555"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.108915" elapsed="0.036722"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:56.146760" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.146611" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.146582" elapsed="0.000255"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.147416" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.147001" elapsed="0.000497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:56.146157" elapsed="0.001529">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.147749" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.097954" elapsed="0.049895">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.148031" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.096535" elapsed="0.051623">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.095479" elapsed="0.052776">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:56.148344" level="FAIL">Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>120s</arg>
<arg>1s</arg>
<arg>PrefixCounting.Check_Ipv4_Topology_Is_Empty</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:10:55.273180" elapsed="120.875265">Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.149809" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.149488" elapsed="0.000363"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.149087" elapsed="0.000815"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.150829" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.150355" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.150336" elapsed="0.000605"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.151119" elapsed="0.000360"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.156849" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.156284" elapsed="0.000595"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:56.157130" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.156955" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.156936" elapsed="0.000273"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.157703" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.157379" elapsed="0.000352"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:56.158434" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_For_Empty_Ipv4_Topology_Before_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.158056" elapsed="0.000404"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:12:56.158875" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:12:56.158691" elapsed="0.000210"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.159486" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.159133" elapsed="0.000380"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.159983" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.159670" elapsed="0.000341"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.160631" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"

Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:12:56.160183" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.161191" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.160842" elapsed="0.000398"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.155946" elapsed="0.005352"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.150141" elapsed="0.011207"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.148777" elapsed="0.012612"/>
</kw>
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:10:55.210840" elapsed="120.950595">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"

Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s2-t2" name="Reconfigure_ODL_To_Accept_Connection" line="85">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.165457" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.165165" elapsed="0.000366">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:56.164915" elapsed="0.000685">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:56.164896" elapsed="0.000737">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.164727" elapsed="0.000995">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.165893" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.162480" elapsed="0.003522">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.167602" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.167183" elapsed="0.000467"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.166674" elapsed="0.001038"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.168630" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.168193" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.168171" elapsed="0.000591"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.168917" elapsed="0.000336"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.174734" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.174238" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:56.174989" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-17T03:12:56.174840" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.174820" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.175248" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.175421" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.175591" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.175757" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.175921" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.176162" elapsed="0.000025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.176337" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.173898" elapsed="0.002517"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.167950" elapsed="0.008513"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.166318" elapsed="0.010185"/>
</kw>
<doc>Configure BGP peer module with initiate-connection set to false.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.161714" elapsed="0.014829">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s2-t3" name="Start_Talking_BGP_Speaker" line="100">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.180534" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.180236" elapsed="0.000370">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:56.179993" elapsed="0.000678">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:56.179974" elapsed="0.000728">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.179806" elapsed="0.000984">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.180959" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.177527" elapsed="0.003539">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.182389" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.182057" elapsed="0.000374"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.181675" elapsed="0.000805"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.183400" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.182997" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.182979" elapsed="0.000539"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.183681" elapsed="0.000351"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.189467" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.189008" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:56.189740" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-17T03:12:56.189574" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.189554" elapsed="0.000282"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.189989" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.190190" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.190368" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.190540" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.190779" elapsed="0.000025"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.190994" elapsed="0.000024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.191193" elapsed="0.000022"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.188672" elapsed="0.002605"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.182782" elapsed="0.008547"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.181370" elapsed="0.010000"/>
</kw>
<doc>Start Python speaker to connect to ODL.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.176996" elapsed="0.014418">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s2-t4" name="Wait_For_Stable_Talking_Ipv4_Topology" line="106">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.195663" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.195343" elapsed="0.000395">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:56.195112" elapsed="0.000695">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:56.195072" elapsed="0.000767">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.194903" elapsed="0.001025">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.196118" elapsed="0.000023"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.192474" elapsed="0.003755">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.197543" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.197222" elapsed="0.000364"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.196829" elapsed="0.000807"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.198493" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.198079" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.198061" elapsed="0.000517"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.198789" elapsed="0.000362"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.204414" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.203959" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:56.204733" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-17T03:12:56.204582" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.204562" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.204970" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.205168" elapsed="0.000023"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.205367" elapsed="0.000023"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.205538" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.205706" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.205873" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.206038" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.203633" elapsed="0.002497"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.197869" elapsed="0.008313"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.196518" elapsed="0.009705"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable. This is done by checking stability of prefix count.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.191819" elapsed="0.014443">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s2-t5" name="Check_Talking_Ipv4_Topology_Count" line="114">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:56.209519" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:56.209255" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.210867" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.210747" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.210726" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.215886" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.215778" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.215759" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.217054" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:56.216621" elapsed="0.000461"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.217566" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:56.217263" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:56.217635" elapsed="0.000036"/>
</return>
<msg time="2026-04-17T03:12:56.217796" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:56.216221" elapsed="0.001599"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.223778" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.223662" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.223642" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.225177" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.225035" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.225016" elapsed="0.000230"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.225726" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.225410" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.226232" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.225985" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.227088" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.226805" elapsed="0.001005">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.228002" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:56.228048" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.226424" elapsed="0.001652"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.228901" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.228649" elapsed="0.000910">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.229744" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:56.229790" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.228304" elapsed="0.001510"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.230806" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.230140" elapsed="0.000728">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:56.229890" elapsed="0.001047">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:56.229869" elapsed="0.001099">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.231148" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.231377" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.231234" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.231218" elapsed="0.000231"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.231481" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.234357" elapsed="0.000149"/>
</kw>
<msg time="2026-04-17T03:12:56.234573" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.233024" elapsed="0.001714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.235024" elapsed="0.000097"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.235386" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.232349" elapsed="0.003217"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.231782" elapsed="0.003846"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.224717" elapsed="0.011001">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</status>
</kw>
<msg time="2026-04-17T03:12:56.235820" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.235864" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.224006" elapsed="0.011881"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.236069" elapsed="0.000481"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.235963" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.235943" elapsed="0.000678"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.237541" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.237403" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.237374" elapsed="0.000239"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.237923" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.238036" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.237784" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.238689" level="INFO">{1: 16}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.238327" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.239241" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.238924" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.239818" elapsed="0.000264"/>
</kw>
<msg time="2026-04-17T03:12:56.240278" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:56.240323" level="INFO">${old_connection_index} = 16</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.239452" elapsed="0.000894"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.241177" elapsed="0.000195"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.242440" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.242016" elapsed="0.001376">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.241541" elapsed="0.001949"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.244161" elapsed="0.000274"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.243665" elapsed="0.000852"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:56.240649" elapsed="0.003913"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.240422" elapsed="0.004188"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.240403" elapsed="0.004231"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.245507" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.245193" elapsed="0.000340"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:56.245582" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:12:56.245736" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.244846" elapsed="0.000914"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.245923" elapsed="0.000463"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.246724" level="INFO">index=17
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.246832" level="INFO">${karaf_connection_object} = index=17
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.246565" elapsed="0.000294"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.247055" elapsed="0.002498"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.249990" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:56.251502" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.249724" elapsed="0.002163">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.266031" elapsed="0.000412"/>
</kw>
<msg time="2026-04-17T03:12:56.266539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.264668" elapsed="0.002081"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.266939" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.267390" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.252869" elapsed="0.014611"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.252304" elapsed="0.015283"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.237054" elapsed="0.030625">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.268070" elapsed="0.000042"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.268166" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.223304" elapsed="0.044975">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:56.268393" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.268436" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.218232" elapsed="0.050227"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.268853" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.268545" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.268523" elapsed="0.000414"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:56.218064" elapsed="0.050898"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:56.217884" elapsed="0.051115"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:56.215394" elapsed="0.053665"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:56.210383" elapsed="0.058751"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.209933" elapsed="0.059247"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:56.207117" elapsed="0.062116"/>
</kw>
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:56.274852" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.271960" elapsed="0.004809">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.277106" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.276890" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.276860" elapsed="0.000329"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.277224" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.271533" elapsed="0.005804">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.277515" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.277581" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.270950" elapsed="0.006728">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:56.277795" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.277840" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.270409" elapsed="0.007508"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.278085" elapsed="0.037649"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:56.316767" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.316634" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.316610" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.317373" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.316994" elapsed="0.000452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:56.316217" elapsed="0.001339">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.317615" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.269907" elapsed="0.047827">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.317932" elapsed="0.000023"/>
</kw>
<arg>${COUNT_PREFIX_COUNT_SINGLE}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.269460" elapsed="0.048588">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.319474" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.319152" elapsed="0.000364"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.318682" elapsed="0.000885"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.320436" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.320020" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.319990" elapsed="0.000533"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.320671" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.326144" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.325700" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:56.326393" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.326248" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.326229" elapsed="0.000226"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.326936" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.326601" elapsed="0.000362"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:56.327409" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_Talking_Ipv4_Topology_Count</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.327140" elapsed="0.000294"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:12:56.327769" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:12:56.327594" elapsed="0.000268"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.328389" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.328023" elapsed="0.000393"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.328938" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.328599" elapsed="0.000369"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.329604" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:12:56.329154" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.330123" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.329814" elapsed="0.000357"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.325376" elapsed="0.004850"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.319788" elapsed="0.010485"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.318374" elapsed="0.011941"/>
</kw>
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:12:56.206487" elapsed="0.123868">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s2-t6" name="Kill_Talking_BGP_Speaker" line="120">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:56.333632" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:56.333364" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.334986" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.334877" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.334857" elapsed="0.000202"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.340085" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.339972" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.339954" elapsed="0.000216"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.341184" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:56.340782" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.341667" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:56.341372" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:56.341737" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:12:56.341895" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:56.340402" elapsed="0.001518"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.347652" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.347544" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.347525" elapsed="0.000247"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.348986" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.348877" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.348859" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.349625" level="INFO">${karaf_connection_index} = 17</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.349252" elapsed="0.000405"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.350341" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.349861" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.351462" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.351111" elapsed="0.001177">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.352516" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:56.352571" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.350585" elapsed="0.002014"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.353482" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.353188" elapsed="0.001006">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.354380" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:56.354426" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.352806" elapsed="0.001642"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.355443" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.354798" elapsed="0.000708">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:56.354536" elapsed="0.001053">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:56.354511" elapsed="0.001122">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.355802" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.356051" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.355899" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.355877" elapsed="0.000268"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.356183" elapsed="0.000022"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.358913" elapsed="0.000164"/>
</kw>
<msg time="2026-04-17T03:12:56.359163" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.357742" elapsed="0.001553"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.359574" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.359907" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.357080" elapsed="0.003039"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.356524" elapsed="0.003663"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.348559" elapsed="0.011713">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:12:56.360375" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.360419" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.347930" elapsed="0.012512"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.360630" elapsed="0.000211"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.360520" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.360500" elapsed="0.000466"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.361828" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.361722" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.361704" elapsed="0.000191"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.362274" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.362379" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.362054" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.362845" level="INFO">{1: 17}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.362557" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.363305" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.363042" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.363882" elapsed="0.000312"/>
</kw>
<msg time="2026-04-17T03:12:56.364303" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:56.364352" level="INFO">${old_connection_index} = 17</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.363507" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.365355" elapsed="0.000235"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.366929" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.366475" elapsed="0.001438">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.365810" elapsed="0.002217"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.368811" elapsed="0.000350"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.368243" elapsed="0.001010"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:56.364727" elapsed="0.004576"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.364461" elapsed="0.004896"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.364438" elapsed="0.004949"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.370396" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.369982" elapsed="0.000443"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:56.370477" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:12:56.370640" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.369626" elapsed="0.001038"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.370867" elapsed="0.000459"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.371615" level="INFO">index=18
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.371717" level="INFO">${karaf_connection_object} = index=18
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.371504" elapsed="0.000239"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.371894" elapsed="0.002630"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.375036" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:56.376371" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.374692" elapsed="0.002058">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.390622" elapsed="0.000439"/>
</kw>
<msg time="2026-04-17T03:12:56.391166" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.389053" elapsed="0.002310"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.391529" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.391693" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.377579" elapsed="0.014195"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.377036" elapsed="0.014782"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.361424" elapsed="0.030476">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.392382" elapsed="0.000037"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.392486" elapsed="0.000024"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.347190" elapsed="0.045443">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:56.392837" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.392901" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.342325" elapsed="0.050615"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.393814" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.393065" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.393036" elapsed="0.000890"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:56.342175" elapsed="0.051787"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:56.341979" elapsed="0.052029"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:56.339605" elapsed="0.054505"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:56.334539" elapsed="0.059658"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.334076" elapsed="0.060186"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:56.331180" elapsed="0.063159"/>
</kw>
<kw name="Kill_BGP_Speaker" owner="BGPSpeaker">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.396083" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.395632" elapsed="0.000705"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-17T03:12:56.396556" elapsed="0.000412"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-17T03:12:56.395246" elapsed="0.001807"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.401345" level="INFO">^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:12:56.397778" elapsed="0.003630"/>
</kw>
<msg time="2026-04-17T03:12:56.401499" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:56.401542" level="INFO">${message} =  ^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.397310" elapsed="0.004258"/>
</kw>
<kw name="Dump_BGP_Speaker_Logs" owner="BGPSpeaker">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.402195" level="INFO">Executing command 'cat play.py.out'.</msg>
<msg time="2026-04-17T03:12:56.415027" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:56.415289" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${BGPSpeaker__OUTPUT_LOG}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:56.402037" elapsed="0.013320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.416326" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.415721" elapsed="0.000698"/>
</kw>
<doc>Send all output produced by the play.py utility to Robot logs.
This needs to be called if your suite detects play.py crashing and bypasses
Kill_BGP_Speaker in that case otherwise the output of play.py (which most
likely contains clues about why it crashed) will be lost.</doc>
<status status="PASS" start="2026-04-17T03:12:56.401761" elapsed="0.014778"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<status status="PASS" start="2026-04-17T03:12:56.416929" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-17T03:12:56.416681" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.416641" elapsed="0.000591"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.417568" elapsed="0.000048"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The prompt was not seen within timeout period.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.417961" elapsed="0.000046"/>
</kw>
<doc>Interrupt play.py, fail if no prompt is seen within SSHLibrary timeout.
Also dump the logs with the output the program produced.
This keyword is also suitable for stopping BGP manager.</doc>
<status status="PASS" start="2026-04-17T03:12:56.394728" elapsed="0.023436"/>
</kw>
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.420049" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.419346" elapsed="0.000787"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:12:56.418595" elapsed="0.001621"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.422305" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.421750" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.421722" elapsed="0.000706"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.422646" elapsed="0.000552"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.429694" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.429238" elapsed="0.000485"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:56.429950" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-17T03:12:56.429801" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.429782" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.430245" elapsed="0.000024"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.430426" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.430601" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.430769" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.430983" elapsed="0.000022"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.431170" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.431336" elapsed="0.000025"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.428891" elapsed="0.002526"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.421119" elapsed="0.010349"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.420582" elapsed="0.010927"/>
</kw>
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:12:56.330600" elapsed="0.100945"/>
</test>
<test id="s1-s2-t7" name="Store_Results_For_Talking_BGP_Speaker" line="129">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:56.434709" elapsed="0.000343"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:56.434439" elapsed="0.000693"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.436241" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.436069" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.436048" elapsed="0.000273"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.441223" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.441110" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.441077" elapsed="0.000216"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.442322" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:56.441913" elapsed="0.000486"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.442990" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:56.442584" elapsed="0.000434"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:56.443065" elapsed="0.000047"/>
</return>
<msg time="2026-04-17T03:12:56.443245" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:56.441528" elapsed="0.001742"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.448900" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.448791" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.448771" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.450327" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.450030" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.450011" elapsed="0.000383"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.450840" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.450540" elapsed="0.000360"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.451321" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.451080" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.452126" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.451847" elapsed="0.000925">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.452956" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:56.453001" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.451509" elapsed="0.001515"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.453919" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.453650" elapsed="0.000937">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.454776" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:56.454822" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.453211" elapsed="0.001634"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.455970" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.455347" elapsed="0.000686">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:56.454939" elapsed="0.001180">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:56.454918" elapsed="0.001235">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.456318" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.456549" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.456405" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.456388" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.456656" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.459318" elapsed="0.000148"/>
</kw>
<msg time="2026-04-17T03:12:56.459531" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.458212" elapsed="0.001455"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.459947" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.460316" elapsed="0.000112"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.457568" elapsed="0.002977"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.456967" elapsed="0.003650"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.449730" elapsed="0.010975">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:12:56.460810" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.460854" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.449140" elapsed="0.011738"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.461065" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.460955" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.460936" elapsed="0.000284"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.462251" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.462139" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.462120" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.462604" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.462711" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.462476" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.463208" level="INFO">{1: 18}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.462919" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.463677" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.463417" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.464277" elapsed="0.000267"/>
</kw>
<msg time="2026-04-17T03:12:56.464644" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:56.464691" level="INFO">${old_connection_index} = 18</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.463886" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.465641" elapsed="0.000199"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.466992" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.466523" elapsed="0.001336">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.466014" elapsed="0.001945"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.468631" elapsed="0.000283"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.468154" elapsed="0.000843"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:56.465017" elapsed="0.004025"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.464789" elapsed="0.004331"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.464770" elapsed="0.004393"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.470068" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.469755" elapsed="0.000357"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:56.470162" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:12:56.470318" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.469417" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.470501" elapsed="0.000470"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.471293" level="INFO">index=19
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.471397" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.471181" elapsed="0.000278"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.471615" elapsed="0.002414"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.474485" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:56.475852" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.474215" elapsed="0.002035">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.489909" elapsed="0.000419"/>
</kw>
<msg time="2026-04-17T03:12:56.490416" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.488600" elapsed="0.001977"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.490745" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.490963" elapsed="0.000037"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.477062" elapsed="0.014014"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.476532" elapsed="0.014739"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.461817" elapsed="0.029542">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.491719" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.491796" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.448451" elapsed="0.043455">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:56.492017" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.492062" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.443666" elapsed="0.048420"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.492447" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.492185" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.492165" elapsed="0.000361"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:56.443514" elapsed="0.049037"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:56.443331" elapsed="0.049254"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:56.440731" elapsed="0.051920"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:56.435750" elapsed="0.056978"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.435311" elapsed="0.057474"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:56.432256" elapsed="0.060587"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.504990" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:12:56.505285" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:12:56.493495" elapsed="0.011831"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.505986" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:12:56.518146" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:56.518283" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:56.505700" elapsed="0.012617"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.519042" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.518556" elapsed="0.000575"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:56.520156" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:12:56.519555" elapsed="0.000749"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:12:56.493048" elapsed="0.027413"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.565042" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:12:56.565307" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:12:56.521874" elapsed="0.043491"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.566121" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:12:56.579083" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:56.579379" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:56.565757" elapsed="0.013681"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.580589" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.579844" elapsed="0.000858"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:56.581859" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:12:56.581193" elapsed="0.000808"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:12:56.520870" elapsed="0.061305"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.624264" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:12:56.624496" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:12:56.583575" elapsed="0.040995"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.625358" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:12:56.637908" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:56.638403" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:56.624979" elapsed="0.013492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.639572" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.638853" elapsed="0.000817"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:56.640750" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-talking-totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-talking-totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:12:56.640118" elapsed="0.000754"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>prefixcount-talking-totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:12:56.582539" elapsed="0.058468"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.683072" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:12:56.683450" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:12:56.642296" elapsed="0.041218"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.684373" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:12:56.697858" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:56.698080" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:56.683969" elapsed="0.014210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.699302" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.698554" elapsed="0.000845"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:56.700553" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-talking-performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-talking-performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:12:56.699828" elapsed="0.000846"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>prefixcount-talking-performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:12:56.641386" elapsed="0.059427"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.702268" elapsed="0.000658"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.705047" elapsed="0.000109"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.704141" elapsed="0.001211"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.704058" elapsed="0.001366"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.705782" elapsed="0.000789"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.714416" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.713764" elapsed="0.000694"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:56.714780" elapsed="0.000049"/>
</return>
<status status="PASS" start="2026-04-17T03:12:56.714566" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.714539" elapsed="0.000371"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.715229" elapsed="0.000045"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.715507" elapsed="0.000030"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.715752" elapsed="0.000028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.716033" elapsed="0.000040"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.716259" elapsed="0.000022"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.716432" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.716598" elapsed="0.000025"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.713318" elapsed="0.003363"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.703601" elapsed="0.013130"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.701505" elapsed="0.015266"/>
</kw>
<doc>Store results for plotting</doc>
<status status="PASS" start="2026-04-17T03:12:56.431769" elapsed="0.285042"/>
</test>
<test id="s1-s2-t8" name="Wait_For_Stable_Ipv4_Topology_After_Talking" line="137">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.720447" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.720219" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.720201" elapsed="0.000326"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.720015" elapsed="0.000557"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.721616" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.721509" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.721491" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.727947" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.727799" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.727773" elapsed="0.000268"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.729486" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:56.728926" elapsed="0.000598"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.730194" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:56.729751" elapsed="0.000480"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:56.730292" elapsed="0.000040"/>
</return>
<msg time="2026-04-17T03:12:56.730507" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:56.728391" elapsed="0.002151"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.736905" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.736797" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.736767" elapsed="0.000251"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.738249" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.738140" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.738119" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.738782" level="INFO">${karaf_connection_index} = 19</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.738461" elapsed="0.000348"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.739227" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.738969" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.740021" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.739759" elapsed="0.000925">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.740870" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:56.740915" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.739419" elapsed="0.001520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.741729" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.741475" elapsed="0.000918">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.742576" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:56.742620" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.741131" elapsed="0.001512"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.743751" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.742948" elapsed="0.000865">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:56.742728" elapsed="0.001166">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:56.742709" elapsed="0.001217">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.744104" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.744337" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.744193" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.744176" elapsed="0.000235"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.744452" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.747330" elapsed="0.000162"/>
</kw>
<msg time="2026-04-17T03:12:56.747555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.746109" elapsed="0.001572"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.747974" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.748373" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.745444" elapsed="0.003121"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.744753" elapsed="0.003909"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.737799" elapsed="0.010972">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</kw>
<msg time="2026-04-17T03:12:56.748885" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.748944" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.737194" elapsed="0.011780"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.749236" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.749077" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.749052" elapsed="0.000314"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.750415" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.750280" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.750256" elapsed="0.000244"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.750885" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.751002" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.750721" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.751555" level="INFO">{1: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.751290" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.751995" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.751753" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.752588" elapsed="0.000292"/>
</kw>
<msg time="2026-04-17T03:12:56.752979" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:56.753045" level="INFO">${old_connection_index} = 19</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.752219" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.753912" elapsed="0.000219"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.755383" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.754812" elapsed="0.001431">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.754304" elapsed="0.002038"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.756976" elapsed="0.000294"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.756519" elapsed="0.000834"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:56.753402" elapsed="0.003997"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.753167" elapsed="0.004280"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.753148" elapsed="0.004323"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.758337" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.758005" elapsed="0.000359"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:56.758412" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:12:56.758562" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.757679" elapsed="0.000908"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.758743" elapsed="0.000462"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.760896" level="INFO">index=20
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.761004" level="INFO">${karaf_connection_object} = index=20
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.759404" elapsed="0.001627"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.761199" elapsed="0.002348"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.763979" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:56.765045" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.763715" elapsed="0.001718">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.779543" elapsed="0.000392"/>
</kw>
<msg time="2026-04-17T03:12:56.780063" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.777797" elapsed="0.002436"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.780399" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.780565" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.766252" elapsed="0.014394"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.765706" elapsed="0.014986"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.749863" elapsed="0.030912">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.781140" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.781217" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.736436" elapsed="0.044890">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:56.781432" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.781476" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.731299" elapsed="0.050199"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.781834" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.781577" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.781558" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:56.731006" elapsed="0.050928"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:56.730620" elapsed="0.051346"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:56.727279" elapsed="0.054742"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:56.721217" elapsed="0.060859"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.720751" elapsed="0.061402"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:56.717718" elapsed="0.064487"/>
</kw>
<kw name="Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable" owner="PrefixCounting">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${shards_list}&quot;&quot;&quot;==&quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:12:56.801929" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:12:56.802169" level="INFO">${getter} = ['Get_Ipv4_Topology_Count', [], {'session': 'operational', 'topology': 'example-ipv4-topology'}]</msg>
<var>${getter}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.801574" elapsed="0.000622"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.799515" elapsed="0.002722"/>
</branch>
<branch type="ELSE">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<var>${getter}</var>
<arg>Get_Ipv4_Topology_Count_With_Shards_Check</arg>
<arg>${shards_list}</arg>
<arg>${shards_details}</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.802473" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.802261" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.799496" elapsed="0.003076"/>
</if>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:12:56.803057" elapsed="0.000027"/>
</return>
<msg time="2026-04-17T03:12:56.803327" level="INFO">${validator} = ['WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'excluded_value': '600000'}]</msg>
<var>${validator}</var>
<arg>WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword</arg>
<arg>state_holder</arg>
<arg>data_holder</arg>
<arg>excluded_value=${excluded_count}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.802762" elapsed="0.000592"/>
</kw>
<kw name="Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.804779" level="INFO">${tmp} = 1</msg>
<var>${tmp}</var>
<arg>int(${count})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.804410" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.805265" level="INFO">count=1</msg>
<arg>count=${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.804963" elapsed="0.000346"/>
</kw>
<kw name="WaitUtils__Check_Sanity_And_Compute_Derived_Times" owner="WaitUtils">
<if>
<branch type="IF" condition="int(${count}) &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>\${count} is ${count} and not at least 1.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.806314" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.806072" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.806053" elapsed="0.000340"/>
</if>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:12:56.806808" level="INFO">${period_in_seconds} = 60.0</msg>
<var>${period_in_seconds}</var>
<arg>${period}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:12:56.806535" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="${period_in_seconds} &lt;= 0.0">
<kw name="Fail" owner="BuiltIn">
<arg>\${period} ${period} has to be positive.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.807370" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.806903" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.806886" elapsed="0.000564"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:12:56.807776" level="INFO">${date_now} = 2026-04-17 03:12:56.808</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:12:56.807594" elapsed="0.000208"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:12:56.808214" level="INFO">${timeout_in_seconds} = 560.0</msg>
<var>${timeout_in_seconds}</var>
<arg>${timeout}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:12:56.807953" elapsed="0.000287"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-17T03:12:56.811292" level="INFO">${date_deadline} = 2026-04-17 03:22:16.808</msg>
<var>${date_deadline}</var>
<arg>${date_now}</arg>
<arg>${timeout_in_seconds}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-17T03:12:56.808399" elapsed="0.002924"/>
</kw>
<return>
<value>${timeout_in_seconds}</value>
<value>${period_in_seconds}</value>
<value>${date_deadline}</value>
<status status="PASS" start="2026-04-17T03:12:56.811376" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:12:56.811626" level="INFO">${timeout_in_seconds} = 560.0</msg>
<msg time="2026-04-17T03:12:56.811673" level="INFO">${period_in_seconds} = 60.0</msg>
<msg time="2026-04-17T03:12:56.811714" level="INFO">${date_deadline} = 2026-04-17 03:22:16.808</msg>
<var>${timeout_in_seconds}</var>
<var>${period_in_seconds}</var>
<var>${date_deadline}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${count}</arg>
<doc>Common checks for argument values. Return times in seconds and deadline date implied by timeout time.</doc>
<status status="PASS" start="2026-04-17T03:12:56.805647" elapsed="0.006090"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.812388" level="INFO">${maximum_sleeps} = 10</msg>
<var>${maximum_sleeps}</var>
<arg>math.ceil(${timeout_in_seconds} / ${period_in_seconds})</arg>
<arg>modules=math</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.811916" elapsed="0.000499"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.812857" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.812596" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.813360" level="INFO">${state} = 600000</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.813049" elapsed="0.000337"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline" owner="WaitUtils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.815302" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.814997" elapsed="0.000331"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.815768" level="INFO">${state} = 600000</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.815486" elapsed="0.000307"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.816288" level="INFO">${sleeps} = 0</msg>
<var>${sleeps}</var>
<arg>${count} - 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.815950" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="WaitUtils__Is_Deadline_Reachable" owner="WaitUtils">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:12:56.817767" level="INFO">${date_now} = 2026-04-17 03:12:56.818</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:12:56.817611" elapsed="0.000183"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-17T03:12:56.818331" level="INFO">${time_deadline} = 559.99</msg>
<var>${time_deadline}</var>
<arg>${date_deadline}</arg>
<arg>${date_now}</arg>
<arg>result_format=number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-17T03:12:56.817946" elapsed="0.000411"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.818889" level="INFO">${time_minimal} = 0.0</msg>
<var>${time_minimal}</var>
<arg>int(${sleeps_left}) * ${period_in_seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.818518" elapsed="0.000397"/>
</kw>
<if>
<branch type="IF" condition="${time_minimal} &gt;= ${time_deadline}">
<kw name="Fail" owner="BuiltIn">
<arg>Not possible to succeed within the deadline. ${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.819409" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.818984" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.818965" elapsed="0.000525"/>
</if>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Compute time to be wasted in sleeps, compare to deadline. Fail with message when needed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.816920" elapsed="0.002618"/>
</kw>
<msg time="2026-04-17T03:12:56.819637" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:56.819681" level="INFO">${message} = None</msg>
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.816483" elapsed="0.003220"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.819928" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.819783" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.819765" elapsed="0.000237"/>
</if>
<for flavor="IN RANGE">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Closure_As_Is" owner="ScalarClosures">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.822780" level="INFO">${keyword} = Get_Ipv4_Topology_Count</msg>
<msg time="2026-04-17T03:12:56.822825" level="INFO">${args} = []</msg>
<msg time="2026-04-17T03:12:56.822869" level="INFO">${kwargs} = {'session': 'operational', 'topology': 'example-ipv4-topology'}</msg>
<var>${keyword}</var>
<var>${args}</var>
<var>${kwargs}</var>
<arg>${closure}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.822423" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:56.828765" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.825815" elapsed="0.004650">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.830921" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.830673" elapsed="0.000320"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.830618" elapsed="0.000435"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.831174" elapsed="0.000048"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.824848" elapsed="0.006590">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.831708" elapsed="0.000046"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.831837" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.823584" elapsed="0.008427">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var>${result}</var>
<arg>${keyword}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.823058" elapsed="0.009010">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.832228" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Run the keyword from closure without affecting arguments.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.821976" elapsed="0.010354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:56.832584" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.832637" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.821427" elapsed="0.011235"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.832948" elapsed="0.027055"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:56.861012" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.860861" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.860836" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.861639" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.861256" elapsed="0.000457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:56.860451" elapsed="0.001444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.861958" elapsed="0.000018"/>
</return>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.821002" elapsed="0.041057">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:56.862186" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.862231" level="INFO">${data} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${data}</var>
<arg>ScalarClosures.Run_Keyword_And_Collect_Garbage</arg>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.820579" elapsed="0.041677"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Getter failed: ${data}</value>
<status status="PASS" start="2026-04-17T03:12:56.862441" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:12:56.862333" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.862315" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.862693" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.862830" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.862794" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.862778" elapsed="0.000119"/>
</if>
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments</arg>
<arg>${safe_validator}</arg>
<arg>${state}</arg>
<arg>${data}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.863139" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Validator failed: ${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.863281" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.863246" elapsed="0.000097"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.863229" elapsed="0.000135"/>
</if>
<if>
<branch type="IF" condition="${sleeps_left} &lt;= 0">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.863450" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.863415" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.863401" elapsed="0.000115"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.863668" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.863798" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.863765" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.863749" elapsed="0.000114"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.864000" elapsed="0.000020"/>
</kw>
<var name="${sleeps_left}">0</var>
<status status="PASS" start="2026-04-17T03:12:56.820432" elapsed="0.043621"/>
</iter>
<var>${sleeps_left}</var>
<value>${count}-1</value>
<value>-1</value>
<value>-1</value>
<status status="PASS" start="2026-04-17T03:12:56.820039" elapsed="0.044061"/>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.864255" elapsed="0.000020"/>
</kw>
<msg time="2026-04-17T03:12:56.864474" level="INFO">${state} = 600000</msg>
<msg time="2026-04-17T03:12:56.864518" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.864558" level="INFO">${result} = Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content...</msg>
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>count=${count}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${safe_validator}</arg>
<arg>initial_state=${state}</arg>
<doc>Pass only if consecutively 1 times in a row with 60 between attempts: ${getter} creates data and ${safe_validator} passes. Validator updates its state even if it reports failure. Always return validator state, status and message.</doc>
<status status="PASS" start="2026-04-17T03:12:56.814261" elapsed="0.050321"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.864771" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.864667" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.864650" elapsed="0.000183"/>
</if>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.866123" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:12:56.866234" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.865831" elapsed="0.000465">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:12:56.866396" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.866440" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.865485" elapsed="0.000978"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.866639" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.866535" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.866516" elapsed="0.000188"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:12:56.867119" level="INFO">@{message_chunks} = [ Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conte...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:12:56.866852" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.870254" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:12:56.870330" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.867676" elapsed="0.002713">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:12:56.870491" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.870534" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.867340" elapsed="0.003218"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="PASS" start="2026-04-17T03:12:56.870735" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-17T03:12:56.870630" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.870612" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.870964" elapsed="0.000022"/>
</kw>
<arg>${result}</arg>
<arg>Not possible to succeed within the deadline.</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="PASS" start="2026-04-17T03:12:56.865109" elapsed="0.006023"/>
</kw>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.872492" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:12:56.872670" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.872155" elapsed="0.000578">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:12:56.872857" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.872902" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.871794" elapsed="0.001131"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.873123" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.873000" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.872980" elapsed="0.000211"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:12:56.873593" level="INFO">@{message_chunks} = [  | : ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconf...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:12:56.873342" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.876757" level="INFO">Length is 0.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:12:56.874215" elapsed="0.002622"/>
</kw>
<msg time="2026-04-17T03:12:56.876929" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:56.876973" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.873803" elapsed="0.003192"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.877209" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.877102" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.877070" elapsed="0.000204"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.877721" level="FAIL">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.877418" elapsed="0.000363">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${result}</arg>
<arg>Getter failed</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.871421" elapsed="0.006481">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.878315" elapsed="0.000023"/>
</kw>
<var name="${try}">1</var>
<status status="FAIL" start="2026-04-17T03:12:56.813709" elapsed="0.064681">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${try}</var>
<value>1</value>
<value>${maximum_sleeps}+2</value>
<status status="FAIL" start="2026-04-17T03:12:56.813453" elapsed="0.065012">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.878631" elapsed="0.000021"/>
</kw>
<var>${result}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${repetitions}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${validator}</arg>
<arg>initial_state=${excluded_count}</arg>
<doc>Analogue of Wait Until Keyword Succeeds, but it passes state of validator around and exits early on getter failure. Calls GASSVHTSCBD to verify data is "stable".</doc>
<status status="FAIL" start="2026-04-17T03:12:56.803695" elapsed="0.075043">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.878807" elapsed="0.000017"/>
</return>
<arg>timeout=${bgp_filling_timeout}</arg>
<arg>period=${CHECK_PERIOD_PREFIX_COUNT_SINGLE}</arg>
<arg>repetitions=${REPETITIONS_PREFIX_COUNT_SINGLE}</arg>
<arg>excluded_count=${COUNT_PREFIX_COUNT_SINGLE}</arg>
<doc>Each ${period} get prefix count. When called with shard list, the check is done before the count is get. After 1 of stable different from ${excluded_count} within ${timeout}, Return validator output. Fail early on getter error.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.794208" elapsed="0.084695">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.880346" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.879993" elapsed="0.000402"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.879606" elapsed="0.000839"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.881259" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.880873" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.880855" elapsed="0.000488"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.881490" elapsed="0.000333"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.887006" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.886600" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:56.887298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.887154" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.887134" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.887873" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.887536" elapsed="0.000364"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:56.888340" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Wait_For_Stable_Ipv4_Topology_After_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.888061" elapsed="0.000306"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:12:56.888705" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:12:56.888529" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.889241" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.888884" elapsed="0.000384"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.889729" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.889424" elapsed="0.000333"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.890363" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:12:56.889913" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.890861" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.890571" elapsed="0.000337"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.886289" elapsed="0.004672"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.880663" elapsed="0.010347"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.879242" elapsed="0.011814"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:12:56.717164" elapsed="0.173954">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s2-t9" name="Check_For_Empty_Ipv4_Topology_After_Talking" line="149">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:56.894504" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:56.894241" elapsed="0.000521"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.895770" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.895661" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.895641" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.900713" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.900609" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.900592" elapsed="0.000186"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.901775" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:56.901396" elapsed="0.000450"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.902332" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:56.902015" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:56.902404" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:12:56.902557" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:56.901002" elapsed="0.001579"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.908351" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.908244" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.908225" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.909615" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.909510" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.909492" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.910142" level="INFO">${karaf_connection_index} = 20</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.909827" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.910545" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.910329" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.911336" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.911066" elapsed="0.000919">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.912188" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:56.912233" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.910729" elapsed="0.001527"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.913010" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.912766" elapsed="0.000913">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:56.913864" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:56.913909" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.912425" elapsed="0.001507"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.914852" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.914248" elapsed="0.000664">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:56.914007" elapsed="0.000971">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:56.913988" elapsed="0.001021">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.915185" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.915438" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.915270" elapsed="0.000221"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.915253" elapsed="0.000260"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.915545" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.918045" elapsed="0.000202"/>
</kw>
<msg time="2026-04-17T03:12:56.918308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.916975" elapsed="0.001458"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.918702" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.919033" elapsed="0.000125"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.916362" elapsed="0.002910"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.915811" elapsed="0.003523"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.909210" elapsed="0.010225">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</kw>
<msg time="2026-04-17T03:12:56.919536" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.919579" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.908574" elapsed="0.011028"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.919784" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.919677" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.919659" elapsed="0.000189"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.920820" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.920718" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.920700" elapsed="0.000185"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.921190" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.921292" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.921039" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.921727" level="INFO">{1: 20}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.921471" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.922272" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:56.921922" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.922897" elapsed="0.000288"/>
</kw>
<msg time="2026-04-17T03:12:56.923283" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:56.923328" level="INFO">${old_connection_index} = 20</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.922515" elapsed="0.000835"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.924197" elapsed="0.000193"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.925447" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.925027" elapsed="0.001325">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.924557" elapsed="0.001891"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.927076" elapsed="0.000301"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.926619" elapsed="0.000840"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:56.923674" elapsed="0.003829"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.923453" elapsed="0.004098"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.923434" elapsed="0.004141"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:56.928422" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.928120" elapsed="0.000328"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:56.928494" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:12:56.928642" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.927783" elapsed="0.000883"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.928821" elapsed="0.000438"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.929539" level="INFO">index=21
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:56.929637" level="INFO">${karaf_connection_object} = index=21
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:56.929433" elapsed="0.000262"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.929849" elapsed="0.002416"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:56.932693" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:56.933960" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.932433" elapsed="0.001984">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:56.948056" elapsed="0.000420"/>
</kw>
<msg time="2026-04-17T03:12:56.948562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.946518" elapsed="0.002189"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.948870" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.949033" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:56.935266" elapsed="0.013864"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:56.934690" elapsed="0.014487"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.920430" elapsed="0.028828">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.949614" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.949688" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.907886" elapsed="0.041905">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:56.949894" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.949937" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.902980" elapsed="0.046979"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.950317" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.950035" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.950016" elapsed="0.000378"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:56.902808" elapsed="0.047609"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:56.902636" elapsed="0.047812"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:56.900255" elapsed="0.050248"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:56.895375" elapsed="0.055182"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.894913" elapsed="0.055687"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:56.892084" elapsed="0.058568"/>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:56.956820" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.953960" elapsed="0.004496">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.958761" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.958593" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:56.958572" elapsed="0.000267"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.958872" elapsed="0.000014"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.953518" elapsed="0.005460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.959172" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.959249" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.952985" elapsed="0.006364">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:56.959473" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:56.959518" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:56.952506" elapsed="0.007036"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.959702" elapsed="0.026722"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:56.987513" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.987333" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.987308" elapsed="0.000273"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.988146" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.987742" elapsed="0.000484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:56.986881" elapsed="0.001460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:56.988400" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.952021" elapsed="0.036475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.988667" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.951500" elapsed="0.037274">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:56.950858" elapsed="0.038011">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.990224" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:56.989887" elapsed="0.000380"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:56.989506" elapsed="0.000811"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:56.991212" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:56.990821" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.990802" elapsed="0.000496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:56.991463" elapsed="0.000311"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.996913" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.996501" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:56.997216" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:56.997013" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:56.996995" elapsed="0.000284"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.997724" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:56.997428" elapsed="0.000323"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:56.998188" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_For_Empty_Ipv4_Topology_After_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:56.997907" elapsed="0.000308"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:12:56.998548" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:12:56.998374" elapsed="0.000199"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.999075" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.998727" elapsed="0.000389"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:56.999638" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:56.999294" elapsed="0.000372"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.000330" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:12:56.999821" elapsed="0.000567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.000841" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.000545" elapsed="0.000343"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:56.996188" elapsed="0.004753"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:56.990609" elapsed="0.010383"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:56.989198" elapsed="0.011835"/>
</kw>
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:12:56.891525" elapsed="0.109548">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s2-t10" name="Start_Listening_BGP_Speaker" line="155">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.005376" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.004943" elapsed="0.000495">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.004727" elapsed="0.000772">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.004709" elapsed="0.000822">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.004542" elapsed="0.001075">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.005803" elapsed="0.000026"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.002048" elapsed="0.003872">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.007201" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:57.006880" elapsed="0.000364"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:57.006522" elapsed="0.000772"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.008120" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.007736" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.007718" elapsed="0.000488"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.008352" elapsed="0.000306"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.013888" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.013490" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:57.014147" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:12:57.013987" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.013969" elapsed="0.000259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.014378" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.014549" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.014720" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.014886" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.015051" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.015233" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.015397" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.013181" elapsed="0.002309"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.007525" elapsed="0.008015"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.006219" elapsed="0.009361"/>
</kw>
<doc>Start Python speaker in listening mode.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.001507" elapsed="0.014109">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s2-t11" name="Reconfigure_ODL_To_Initiate_Connection" line="160">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.019448" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.019178" elapsed="0.000363">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.018925" elapsed="0.000712">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.018889" elapsed="0.000780">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.018702" elapsed="0.001052">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.019918" elapsed="0.000021"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.016534" elapsed="0.003491">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.021335" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:57.020982" elapsed="0.000394"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:57.020628" elapsed="0.000799"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.022252" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.021850" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.021832" elapsed="0.000505"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.022483" elapsed="0.000347"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.027954" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.027552" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:57.028213" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-17T03:12:57.028052" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.028034" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.028441" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.028614" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.028786" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.028953" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.029135" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.029355" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.029520" elapsed="0.000018"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.027222" elapsed="0.002371"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.021641" elapsed="0.008000"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.020329" elapsed="0.009353"/>
</kw>
<doc>Replace BGP peer config module, now with initiate-connection set to true.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.015963" elapsed="0.013754">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s2-t12" name="Wait_For_Stable_Listening_Ipv4_Topology" line="175">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.033383" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.033111" elapsed="0.000331">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.032882" elapsed="0.000621">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.032864" elapsed="0.000702">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.032700" elapsed="0.000955">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.033820" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.030539" elapsed="0.003387">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.035192" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:57.034871" elapsed="0.000363"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:57.034516" elapsed="0.000768"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.036127" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.035735" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.035717" elapsed="0.000496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.036363" elapsed="0.000390"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.041828" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.041428" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:57.042069" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-17T03:12:57.041928" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.041910" elapsed="0.000254"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.042314" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.042487" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.042659" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.042825" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.042990" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.043169" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.043334" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.041121" elapsed="0.002287"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.035524" elapsed="0.007933"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.034215" elapsed="0.009306"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.030004" elapsed="0.013555">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s2-t13" name="Check_Listening_Ipv4_Topology_Count" line="183">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:57.046889" elapsed="0.000267"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:57.046608" elapsed="0.000602"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.048256" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.048147" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.048127" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.053212" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.053105" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.053074" elapsed="0.000241"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.054336" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:57.053939" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.054827" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:57.054526" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:57.054900" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:12:57.055059" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:57.053545" elapsed="0.001539"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.060733" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.060623" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.060604" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.061985" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.061880" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.061862" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.062524" level="INFO">${karaf_connection_index} = 21</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.062226" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.062928" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.062712" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.063745" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.063470" elapsed="0.000927">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.064582" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:57.064626" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.063131" elapsed="0.001518"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.065415" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.065173" elapsed="0.000869">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.066240" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:57.066285" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.064819" elapsed="0.001488"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.067226" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.066602" elapsed="0.000684">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.066382" elapsed="0.000973">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.066362" elapsed="0.001024">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.067641" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.067872" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.067729" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.067712" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.067978" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.070590" elapsed="0.000145"/>
</kw>
<msg time="2026-04-17T03:12:57.070799" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.069488" elapsed="0.001437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.071278" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.071625" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.068807" elapsed="0.002997"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.068270" elapsed="0.003599"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.061581" elapsed="0.010371">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</status>
</kw>
<msg time="2026-04-17T03:12:57.072053" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.072114" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.060955" elapsed="0.011184"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.072320" elapsed="0.000169"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.072214" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.072196" elapsed="0.000347"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.073394" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.073290" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.073273" elapsed="0.000187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.073732" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.073832" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.073610" elapsed="0.000248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.074285" level="INFO">{1: 21}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.074009" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.074722" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.074480" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.075348" elapsed="0.000268"/>
</kw>
<msg time="2026-04-17T03:12:57.075714" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.075759" level="INFO">${old_connection_index} = 21</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.074923" elapsed="0.000858"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.076596" elapsed="0.000188"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.077844" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.077442" elapsed="0.001284">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.076953" elapsed="0.001871"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.079630" elapsed="0.000271"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.078996" elapsed="0.000986"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:57.076075" elapsed="0.003953"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.075854" elapsed="0.004221"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.075836" elapsed="0.004281"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.080947" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.080646" elapsed="0.000327"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:57.081019" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:12:57.081184" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.080325" elapsed="0.000883"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.081362" elapsed="0.000438"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.082077" level="INFO">index=22
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.082388" level="INFO">${karaf_connection_object} = index=22
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.081971" elapsed="0.000444"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.082567" elapsed="0.002485"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.085500" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:57.086673" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.085237" elapsed="0.001806">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.100474" elapsed="0.000422"/>
</kw>
<msg time="2026-04-17T03:12:57.100985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.099146" elapsed="0.002017"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.101329" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.101492" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.087885" elapsed="0.013687"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.087335" elapsed="0.014282"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.072987" elapsed="0.028711">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.102044" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.102306" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.060280" elapsed="0.042135">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:57.102521" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.102564" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.055520" elapsed="0.047066"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.102917" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.102663" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.102645" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:57.055346" elapsed="0.047668"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:57.055166" elapsed="0.047879"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:57.052738" elapsed="0.050379"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:57.047845" elapsed="0.055329"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.047363" elapsed="0.055856"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:57.044437" elapsed="0.058833"/>
</kw>
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:57.108617" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.105889" elapsed="0.004432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.110630" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.110461" elapsed="0.000223"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.110440" elapsed="0.000268"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.110741" elapsed="0.000014"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.105465" elapsed="0.005382">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.111022" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.111137" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.104932" elapsed="0.006306">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:57.111346" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.111390" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.104451" elapsed="0.006963"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.111614" elapsed="0.028856"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:57.141484" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.141350" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.141325" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.142118" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.141734" elapsed="0.000471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:57.140907" elapsed="0.001410">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.142386" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.103949" elapsed="0.038544">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.142677" elapsed="0.000022"/>
</kw>
<arg>${COUNT_PREFIX_COUNT_SINGLE}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.103486" elapsed="0.039308">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.144221" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:57.143850" elapsed="0.000433"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:57.143434" elapsed="0.000900"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.145329" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.144854" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.144835" elapsed="0.000593"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.145579" elapsed="0.000308"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.151146" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.150713" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:57.151430" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.151276" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.151258" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.151957" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.151661" elapsed="0.000323"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:57.152434" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_Listening_Ipv4_Topology_Count</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.152158" elapsed="0.000306"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:12:57.152919" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:12:57.152715" elapsed="0.000231"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.153501" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.153119" elapsed="0.000409"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.154007" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.153684" elapsed="0.000361"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.154655" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:12:57.154221" elapsed="0.000486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.155198" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.154882" elapsed="0.000363"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.150403" elapsed="0.004896"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.144631" elapsed="0.010717"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.143115" elapsed="0.012275"/>
</kw>
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:12:57.043847" elapsed="0.111581">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s2-t14" name="Kill_Listening_BGP_Speaker" line="189">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:57.158830" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:57.158559" elapsed="0.000584"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.160191" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.160065" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.160045" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.165234" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.165128" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.165110" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.166322" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:57.165914" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.166826" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:57.166510" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:57.166897" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:12:57.167052" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:57.165537" elapsed="0.001539"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.172862" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.172713" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.172693" elapsed="0.000249"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.174193" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.174058" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.174031" elapsed="0.000228"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.174723" level="INFO">${karaf_connection_index} = 22</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.174405" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.175499" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.175137" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.176502" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.176246" elapsed="0.001003">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.177441" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:57.177486" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.175787" elapsed="0.001723"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.178309" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.178049" elapsed="0.000891">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.179151" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:57.179205" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.177701" elapsed="0.001527"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.180173" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.179524" elapsed="0.000711">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.179304" elapsed="0.000997">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.179284" elapsed="0.001050">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.180496" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.180735" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.180591" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.180574" elapsed="0.000267"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.180879" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.183537" elapsed="0.000218"/>
</kw>
<msg time="2026-04-17T03:12:57.183818" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.182465" elapsed="0.001479"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.184238" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.184567" elapsed="0.000096"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.181690" elapsed="0.003080"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.181160" elapsed="0.003672"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.173747" elapsed="0.011168">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:12:57.185015" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.185058" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.173112" elapsed="0.011969"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.185289" elapsed="0.000322"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.185182" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.185154" elapsed="0.000515"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.186525" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.186418" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.186400" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.186868" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.186981" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.186746" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.187523" level="INFO">{1: 22}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.187251" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.187979" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.187739" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.188564" elapsed="0.000280"/>
</kw>
<msg time="2026-04-17T03:12:57.189049" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.189197" level="INFO">${old_connection_index} = 22</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.188207" elapsed="0.001020"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.190121" elapsed="0.000194"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.191443" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.190952" elapsed="0.001563">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.190483" elapsed="0.002141"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.193305" elapsed="0.000272"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.192806" elapsed="0.000867"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:57.189598" elapsed="0.004120"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.189370" elapsed="0.004397"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.189339" elapsed="0.004452"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.194668" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.194365" elapsed="0.000329"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:57.194777" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:12:57.194929" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.194021" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.195144" elapsed="0.000426"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.195864" level="INFO">index=23
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.195984" level="INFO">${karaf_connection_object} = index=23
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.195757" elapsed="0.000253"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.196194" elapsed="0.002548"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.199225" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:57.200578" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.198911" elapsed="0.002065">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.215323" elapsed="0.000514"/>
</kw>
<msg time="2026-04-17T03:12:57.215959" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.213796" elapsed="0.002354"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.216345" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.216515" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.201914" elapsed="0.014683"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.201363" elapsed="0.015306"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.186103" elapsed="0.030659">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.217133" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.217208" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.172374" elapsed="0.044941">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:57.217423" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.217467" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.167477" elapsed="0.050013"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.217841" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.217567" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.217549" elapsed="0.000369"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:57.167331" elapsed="0.050611"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:57.167155" elapsed="0.050819"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:57.164756" elapsed="0.053274"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:57.159768" elapsed="0.058331"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.159305" elapsed="0.058853"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:57.156354" elapsed="0.061859"/>
</kw>
<kw name="Kill_BGP_Speaker" owner="BGPSpeaker">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.219736" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.219401" elapsed="0.000363"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-17T03:12:57.219932" elapsed="0.000290"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-17T03:12:57.218905" elapsed="0.001387"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.222416" level="INFO">^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:12:57.220824" elapsed="0.001662"/>
</kw>
<msg time="2026-04-17T03:12:57.222580" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.222636" level="INFO">${message} =  ^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.220466" elapsed="0.002196"/>
</kw>
<kw name="Dump_BGP_Speaker_Logs" owner="BGPSpeaker">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.223540" level="INFO">Executing command 'cat play.py.out'.</msg>
<msg time="2026-04-17T03:12:57.236561" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:57.236776" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${BGPSpeaker__OUTPUT_LOG}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:57.223396" elapsed="0.013436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.237937" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.237325" elapsed="0.000721"/>
</kw>
<doc>Send all output produced by the play.py utility to Robot logs.
This needs to be called if your suite detects play.py crashing and bypasses
Kill_BGP_Speaker in that case otherwise the output of play.py (which most
likely contains clues about why it crashed) will be lost.</doc>
<status status="PASS" start="2026-04-17T03:12:57.222896" elapsed="0.015322"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<status status="PASS" start="2026-04-17T03:12:57.238620" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-17T03:12:57.238373" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.238332" elapsed="0.000467"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.239208" elapsed="0.000084"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The prompt was not seen within timeout period.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.239863" elapsed="0.000049"/>
</kw>
<doc>Interrupt play.py, fail if no prompt is seen within SSHLibrary timeout.
Also dump the logs with the output the program produced.
This keyword is also suitable for stopping BGP manager.</doc>
<status status="PASS" start="2026-04-17T03:12:57.218567" elapsed="0.021475"/>
</kw>
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.241960" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:57.241212" elapsed="0.000844"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:12:57.240520" elapsed="0.001702"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.244828" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.244212" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.244194" elapsed="0.000735"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.245103" elapsed="0.000370"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.251044" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.250511" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:57.251342" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:12:57.251169" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.251149" elapsed="0.000293"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.251619" elapsed="0.000024"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.251874" elapsed="0.000023"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.252055" elapsed="0.000028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.252277" elapsed="0.000023"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.252509" elapsed="0.000025"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.252709" elapsed="0.000058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.252928" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.250177" elapsed="0.002870"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.243832" elapsed="0.009283"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.242791" elapsed="0.010367"/>
</kw>
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:12:57.155784" elapsed="0.097414"/>
</test>
<test id="s1-s2-t15" name="Store_Results_For_Listening_BGP_Speaker" line="198">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:57.256669" elapsed="0.000240"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:57.256378" elapsed="0.000586"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.258035" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.257917" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.257897" elapsed="0.000231"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.263272" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.263158" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.263126" elapsed="0.000215"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.264470" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:57.264006" elapsed="0.000492"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.264980" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:57.264670" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:57.265050" elapsed="0.000055"/>
</return>
<msg time="2026-04-17T03:12:57.265233" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:57.263593" elapsed="0.001674"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.271138" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.271006" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.270987" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.272505" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.272399" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.272381" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.273083" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.272730" elapsed="0.000396"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.273528" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.273303" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.274377" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.274073" elapsed="0.000965">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.275259" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:57.275319" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.273726" elapsed="0.001617"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.276176" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.275901" elapsed="0.000919">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.277001" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:57.277047" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.275513" elapsed="0.001557"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.278064" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.277450" elapsed="0.000693">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.277214" elapsed="0.000999">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.277194" elapsed="0.001050">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.278409" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.278661" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.278495" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.278478" elapsed="0.000258"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.278769" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.281509" elapsed="0.000147"/>
</kw>
<msg time="2026-04-17T03:12:57.281721" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.280350" elapsed="0.001510"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.282187" elapsed="0.000107"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.282618" elapsed="0.000101"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.279649" elapsed="0.003188"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.279042" elapsed="0.003878"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.272045" elapsed="0.010962">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:12:57.283138" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.283183" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.271382" elapsed="0.011824"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.283437" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.283326" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.283304" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.284634" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.284530" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.284512" elapsed="0.000187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.284978" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.285123" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.284855" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.285589" level="INFO">{1: 23}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.285316" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.286034" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.285786" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.286646" elapsed="0.000268"/>
</kw>
<msg time="2026-04-17T03:12:57.287013" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.287058" level="INFO">${old_connection_index} = 23</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.286267" elapsed="0.000813"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.287974" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.289402" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.288964" elapsed="0.001389">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.288443" elapsed="0.002010"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.291102" elapsed="0.000315"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.290625" elapsed="0.000889"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:57.287428" elapsed="0.004134"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.287180" elapsed="0.004432"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.287161" elapsed="0.004475"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.292636" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.292305" elapsed="0.000358"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:57.292712" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:12:57.292874" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.291903" elapsed="0.000996"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.293063" elapsed="0.000581"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.293940" level="INFO">index=24
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.294038" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.293831" elapsed="0.000233"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.294381" elapsed="0.002640"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.297496" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:57.298644" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.297225" elapsed="0.001801">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.313191" elapsed="0.000404"/>
</kw>
<msg time="2026-04-17T03:12:57.313691" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.311794" elapsed="0.002055"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.314014" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.314353" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.299885" elapsed="0.014560"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.299323" elapsed="0.015168"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.284230" elapsed="0.030344">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.314943" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.315029" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.270658" elapsed="0.044692">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:57.315462" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.315517" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.265647" elapsed="0.049893"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.316025" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.315621" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.315602" elapsed="0.000522"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:57.265502" elapsed="0.050647"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:57.265326" elapsed="0.050857"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:57.262719" elapsed="0.053535"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:57.257565" elapsed="0.058768"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.257141" elapsed="0.059255"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:57.254016" elapsed="0.062445"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.326163" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:12:57.326455" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:12:57.317024" elapsed="0.009517"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.327365" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:12:57.340169" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:57.340401" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:57.326963" elapsed="0.013510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.341569" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.340887" elapsed="0.000781"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:57.342772" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:12:57.342116" elapsed="0.000782"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:12:57.316630" elapsed="0.026407"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.384821" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:12:57.385051" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:12:57.344296" elapsed="0.040870"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.385919" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:12:57.399134" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:57.399386" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:57.385597" elapsed="0.013851"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.400599" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.399923" elapsed="0.000777"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:57.401804" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:12:57.401121" elapsed="0.000817"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:12:57.343440" elapsed="0.058638"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.444984" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:12:57.445240" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:12:57.403384" elapsed="0.041915"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.446000" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:12:57.458872" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:57.459015" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:57.445683" elapsed="0.013381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.460124" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.459478" elapsed="0.000745"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:57.461255" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-listening-totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-listening-totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:12:57.460606" elapsed="0.000784"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>prefixcount-listening-totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:12:57.402451" elapsed="0.059071"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.506197" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:12:57.506448" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:12:57.462740" elapsed="0.043748"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.506993" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:12:57.520889" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:57.521139" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:57.506766" elapsed="0.014432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.522203" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.521570" elapsed="0.000726"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:57.523337" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-listening-performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-listening-performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:12:57.522696" elapsed="0.000790"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>prefixcount-listening-performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:12:57.461848" elapsed="0.061773"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:57.525044" elapsed="0.000407"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.526743" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.526151" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.526116" elapsed="0.000757"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.527117" elapsed="0.000469"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.534628" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.534204" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:12:57.534875" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-17T03:12:57.534730" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.534711" elapsed="0.000253"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.535155" elapsed="0.000025"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.535338" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.535513" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.535683" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.535849" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.536054" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.536275" elapsed="0.000023"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.533878" elapsed="0.002481"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.525803" elapsed="0.010605"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.524346" elapsed="0.012105"/>
</kw>
<doc>Store results for plotting</doc>
<status status="PASS" start="2026-04-17T03:12:57.253494" elapsed="0.282995"/>
</test>
<test id="s1-s2-t16" name="Wait_For_Stable_Ipv4_Topology_After_Listening" line="208">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.540140" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.539873" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.539854" elapsed="0.000367"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:12:57.539686" elapsed="0.000581"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.541337" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.541229" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.541210" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.546713" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.546604" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.546586" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.547810" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:57.547421" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.548363" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:57.548027" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:57.548435" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:12:57.548593" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:57.547018" elapsed="0.001601"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.554236" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.554124" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.554102" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.555503" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.555396" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.555378" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.556073" level="INFO">${karaf_connection_index} = 24</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.555718" elapsed="0.000402"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.556515" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.556295" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.557469" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.557046" elapsed="0.001088">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.558324" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:57.558370" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.556705" elapsed="0.001689"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.559168" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.558911" elapsed="0.000895">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.560026" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:57.560077" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.558566" elapsed="0.001557"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.561224" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.560436" elapsed="0.000852">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.560210" elapsed="0.001148">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.560187" elapsed="0.001203">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.561557" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.561789" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.561644" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.561626" elapsed="0.000241"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.561935" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.564660" elapsed="0.000149"/>
</kw>
<msg time="2026-04-17T03:12:57.564873" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.563508" elapsed="0.001493"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.565324" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.565664" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.562866" elapsed="0.002981"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.562228" elapsed="0.003683"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.555065" elapsed="0.010932">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</kw>
<msg time="2026-04-17T03:12:57.566118" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.566164" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.554461" elapsed="0.011727"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.566398" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.566286" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.566260" elapsed="0.000203"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.567273" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.567170" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.567151" elapsed="0.000188"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.567617" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.567719" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.567494" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.568286" level="INFO">{1: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.567899" elapsed="0.000432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.568731" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.568486" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.569315" elapsed="0.000259"/>
</kw>
<msg time="2026-04-17T03:12:57.569671" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.569717" level="INFO">${old_connection_index} = 24</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.568934" elapsed="0.000805"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.570565" elapsed="0.000192"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.571820" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.571421" elapsed="0.001329">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.570928" elapsed="0.001920"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.573505" elapsed="0.000272"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.573023" elapsed="0.000835"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:57.570038" elapsed="0.003866"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.569815" elapsed="0.004137"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.569795" elapsed="0.004181"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.574856" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.574553" elapsed="0.000329"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:57.574968" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:12:57.575141" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.574215" elapsed="0.000951"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.575325" elapsed="0.000416"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.577735" level="INFO">index=25
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.577844" level="INFO">${karaf_connection_object} = index=25
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.575912" elapsed="0.001959"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.578028" elapsed="0.002451"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.581015" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:57.582300" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.580702" elapsed="0.001974">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.596728" elapsed="0.000403"/>
</kw>
<msg time="2026-04-17T03:12:57.597221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.595150" elapsed="0.002218"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.597531" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.597695" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.583496" elapsed="0.014280"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.582957" elapsed="0.014864"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.566863" elapsed="0.031041">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.598274" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.598348" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.553764" elapsed="0.044693">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:57.598582" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.598643" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.549002" elapsed="0.049667"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.599010" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.598752" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.598731" elapsed="0.000372"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:57.548853" elapsed="0.050276"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:57.548676" elapsed="0.050484"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:57.546233" elapsed="0.052985"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:57.540912" elapsed="0.058361"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.540466" elapsed="0.058852"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:57.537461" elapsed="0.061907"/>
</kw>
<kw name="Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable" owner="PrefixCounting">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${shards_list}&quot;&quot;&quot;==&quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:12:57.618443" elapsed="0.000045"/>
</return>
<msg time="2026-04-17T03:12:57.618757" level="INFO">${getter} = ['Get_Ipv4_Topology_Count', [], {'session': 'operational', 'topology': 'example-ipv4-topology'}]</msg>
<var>${getter}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.617869" elapsed="0.000927"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.615732" elapsed="0.003125"/>
</branch>
<branch type="ELSE">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<var>${getter}</var>
<arg>Get_Ipv4_Topology_Count_With_Shards_Check</arg>
<arg>${shards_list}</arg>
<arg>${shards_details}</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.619221" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.618893" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.615714" elapsed="0.003644"/>
</if>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:12:57.620131" elapsed="0.000043"/>
</return>
<msg time="2026-04-17T03:12:57.620441" level="INFO">${validator} = ['WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'excluded_value': '600000'}]</msg>
<var>${validator}</var>
<arg>WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword</arg>
<arg>state_holder</arg>
<arg>data_holder</arg>
<arg>excluded_value=${excluded_count}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.619638" elapsed="0.000841"/>
</kw>
<kw name="Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.622152" level="INFO">${tmp} = 1</msg>
<var>${tmp}</var>
<arg>int(${count})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.621778" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.622610" level="INFO">count=1</msg>
<arg>count=${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.622339" elapsed="0.000314"/>
</kw>
<kw name="WaitUtils__Check_Sanity_And_Compute_Derived_Times" owner="WaitUtils">
<if>
<branch type="IF" condition="int(${count}) &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>\${count} is ${count} and not at least 1.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.623576" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.623354" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.623335" elapsed="0.000318"/>
</if>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:12:57.624080" level="INFO">${period_in_seconds} = 60.0</msg>
<var>${period_in_seconds}</var>
<arg>${period}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:12:57.623795" elapsed="0.000327"/>
</kw>
<if>
<branch type="IF" condition="${period_in_seconds} &lt;= 0.0">
<kw name="Fail" owner="BuiltIn">
<arg>\${period} ${period} has to be positive.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.624410" elapsed="0.000222"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.624192" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.624175" elapsed="0.000518"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:12:57.625017" level="INFO">${date_now} = 2026-04-17 03:12:57.625</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:12:57.624844" elapsed="0.000200"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:12:57.625457" level="INFO">${timeout_in_seconds} = 560.0</msg>
<var>${timeout_in_seconds}</var>
<arg>${timeout}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:12:57.625212" elapsed="0.000271"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-17T03:12:57.625963" level="INFO">${date_deadline} = 2026-04-17 03:22:17.625</msg>
<var>${date_deadline}</var>
<arg>${date_now}</arg>
<arg>${timeout_in_seconds}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-17T03:12:57.625641" elapsed="0.000348"/>
</kw>
<return>
<value>${timeout_in_seconds}</value>
<value>${period_in_seconds}</value>
<value>${date_deadline}</value>
<status status="PASS" start="2026-04-17T03:12:57.626036" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:12:57.626315" level="INFO">${timeout_in_seconds} = 560.0</msg>
<msg time="2026-04-17T03:12:57.626378" level="INFO">${period_in_seconds} = 60.0</msg>
<msg time="2026-04-17T03:12:57.626423" level="INFO">${date_deadline} = 2026-04-17 03:22:17.625</msg>
<var>${timeout_in_seconds}</var>
<var>${period_in_seconds}</var>
<var>${date_deadline}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${count}</arg>
<doc>Common checks for argument values. Return times in seconds and deadline date implied by timeout time.</doc>
<status status="PASS" start="2026-04-17T03:12:57.622935" elapsed="0.003510"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.627106" level="INFO">${maximum_sleeps} = 10</msg>
<var>${maximum_sleeps}</var>
<arg>math.ceil(${timeout_in_seconds} / ${period_in_seconds})</arg>
<arg>modules=math</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.626634" elapsed="0.000501"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.627582" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.627309" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.628148" level="INFO">${state} = 600000</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.627772" elapsed="0.000403"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline" owner="WaitUtils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.630005" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.629742" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.630493" level="INFO">${state} = 600000</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.630206" elapsed="0.000313"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.631072" level="INFO">${sleeps} = 0</msg>
<var>${sleeps}</var>
<arg>${count} - 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.630740" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="WaitUtils__Is_Deadline_Reachable" owner="WaitUtils">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:12:57.632563" level="INFO">${date_now} = 2026-04-17 03:12:57.632</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:12:57.632404" elapsed="0.000186"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-17T03:12:57.633130" level="INFO">${time_deadline} = 559.993</msg>
<var>${time_deadline}</var>
<arg>${date_deadline}</arg>
<arg>${date_now}</arg>
<arg>result_format=number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-17T03:12:57.632744" elapsed="0.000415"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.633701" level="INFO">${time_minimal} = 0.0</msg>
<var>${time_minimal}</var>
<arg>int(${sleeps_left}) * ${period_in_seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.633325" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="${time_minimal} &gt;= ${time_deadline}">
<kw name="Fail" owner="BuiltIn">
<arg>Not possible to succeed within the deadline. ${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.634045" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.633798" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.633779" elapsed="0.000367"/>
</if>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Compute time to be wasted in sleeps, compare to deadline. Fail with message when needed.</doc>
<status status="PASS" start="2026-04-17T03:12:57.631743" elapsed="0.002451"/>
</kw>
<msg time="2026-04-17T03:12:57.634293" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.634337" level="INFO">${message} = None</msg>
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.631285" elapsed="0.003074"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.634545" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.634437" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.634420" elapsed="0.000218"/>
</if>
<for flavor="IN RANGE">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Closure_As_Is" owner="ScalarClosures">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.637684" level="INFO">${keyword} = Get_Ipv4_Topology_Count</msg>
<msg time="2026-04-17T03:12:57.637737" level="INFO">${args} = []</msg>
<msg time="2026-04-17T03:12:57.637790" level="INFO">${kwargs} = {'session': 'operational', 'topology': 'example-ipv4-topology'}</msg>
<var>${keyword}</var>
<var>${args}</var>
<var>${kwargs}</var>
<arg>${closure}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.637128" elapsed="0.000689"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:57.644372" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.641279" elapsed="0.005043">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.646774" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.646531" elapsed="0.000317"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.646476" elapsed="0.000418"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.646984" elapsed="0.000038"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.640175" elapsed="0.007064">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.647516" elapsed="0.000046"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.647644" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.638675" elapsed="0.009158">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var>${result}</var>
<arg>${keyword}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.638026" elapsed="0.009873">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.648000" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Run the keyword from closure without affecting arguments.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.636728" elapsed="0.011425">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:57.648268" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.648314" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.636138" elapsed="0.012201"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.648513" elapsed="0.028826"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:57.678341" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.678208" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.678184" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.679149" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.678672" elapsed="0.000560">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:57.677778" elapsed="0.001575">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.679416" elapsed="0.000019"/>
</return>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.635665" elapsed="0.043855">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:57.679636" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.679680" level="INFO">${data} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${data}</var>
<arg>ScalarClosures.Run_Keyword_And_Collect_Garbage</arg>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.635240" elapsed="0.044464"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Getter failed: ${data}</value>
<status status="PASS" start="2026-04-17T03:12:57.679895" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-17T03:12:57.679781" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.679763" elapsed="0.000223"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.680204" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.680354" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.680316" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.680298" elapsed="0.000121"/>
</if>
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments</arg>
<arg>${safe_validator}</arg>
<arg>${state}</arg>
<arg>${data}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.680642" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Validator failed: ${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.680780" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.680745" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.680730" elapsed="0.000115"/>
</if>
<if>
<branch type="IF" condition="${sleeps_left} &lt;= 0">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.681003" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.680967" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.680949" elapsed="0.000121"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.681237" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.681440" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.681404" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.681387" elapsed="0.000121"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.681648" elapsed="0.000021"/>
</kw>
<var name="${sleeps_left}">0</var>
<status status="PASS" start="2026-04-17T03:12:57.635073" elapsed="0.046630"/>
</iter>
<var>${sleeps_left}</var>
<value>${count}-1</value>
<value>-1</value>
<value>-1</value>
<status status="PASS" start="2026-04-17T03:12:57.634677" elapsed="0.047062"/>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.681896" elapsed="0.000020"/>
</kw>
<msg time="2026-04-17T03:12:57.682135" level="INFO">${state} = 600000</msg>
<msg time="2026-04-17T03:12:57.682182" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.682225" level="INFO">${result} = Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content...</msg>
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>count=${count}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${safe_validator}</arg>
<arg>initial_state=${state}</arg>
<doc>Pass only if consecutively 1 times in a row with 60 between attempts: ${getter} creates data and ${safe_validator} passes. Validator updates its state even if it reports failure. Always return validator state, status and message.</doc>
<status status="PASS" start="2026-04-17T03:12:57.629010" elapsed="0.053239"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.682443" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.682337" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.682318" elapsed="0.000189"/>
</if>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.683849" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:12:57.683925" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.683572" elapsed="0.000413">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:12:57.684165" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.684220" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.683222" elapsed="0.001023"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.684427" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.684319" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.684300" elapsed="0.000192"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:12:57.684913" level="INFO">@{message_chunks} = [ Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conte...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:12:57.684640" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.688127" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:12:57.688214" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.685460" elapsed="0.002831">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:12:57.688415" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.688460" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.685125" elapsed="0.003360"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="PASS" start="2026-04-17T03:12:57.688665" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-17T03:12:57.688558" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.688539" elapsed="0.000208"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.688894" elapsed="0.000022"/>
</kw>
<arg>${result}</arg>
<arg>Not possible to succeed within the deadline.</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="PASS" start="2026-04-17T03:12:57.682776" elapsed="0.006270"/>
</kw>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.690582" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:12:57.690668" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.690280" elapsed="0.000456">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:12:57.690851" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.690901" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.689858" elapsed="0.001070"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.691154" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.691012" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.690991" elapsed="0.000243"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:12:57.691721" level="INFO">@{message_chunks} = [  | : ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconf...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:12:57.691418" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.695449" level="INFO">Length is 0.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:12:57.692482" elapsed="0.003016"/>
</kw>
<msg time="2026-04-17T03:12:57.695593" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.695636" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.691969" elapsed="0.003690"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.695837" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.695732" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.695713" elapsed="0.000190"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.696456" level="FAIL">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.696079" elapsed="0.000441">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${result}</arg>
<arg>Getter failed</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.689340" elapsed="0.007295">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.696855" elapsed="0.000029"/>
</kw>
<var name="${try}">1</var>
<status status="FAIL" start="2026-04-17T03:12:57.628487" elapsed="0.068460">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${try}</var>
<value>1</value>
<value>${maximum_sleeps}+2</value>
<status status="FAIL" start="2026-04-17T03:12:57.628234" elapsed="0.068792">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.697246" elapsed="0.000025"/>
</kw>
<var>${result}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${repetitions}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${validator}</arg>
<arg>initial_state=${excluded_count}</arg>
<doc>Analogue of Wait Until Keyword Succeeds, but it passes state of validator around and exits early on getter failure. Calls GASSVHTSCBD to verify data is "stable".</doc>
<status status="FAIL" start="2026-04-17T03:12:57.620964" elapsed="0.076411">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.697458" elapsed="0.000019"/>
</return>
<arg>timeout=${bgp_filling_timeout}</arg>
<arg>period=${CHECK_PERIOD_PREFIX_COUNT_SINGLE}</arg>
<arg>repetitions=${REPETITIONS_PREFIX_COUNT_SINGLE}</arg>
<arg>excluded_count=${COUNT_PREFIX_COUNT_SINGLE}</arg>
<doc>Each ${period} get prefix count. When called with shard list, the check is done before the count is get. After 1 of stable different from ${excluded_count} within ${timeout}, Return validator output. Fail early on getter error.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.611490" elapsed="0.086080">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.699307" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:57.698856" elapsed="0.000510"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:57.698394" elapsed="0.001041"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.700602" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.700021" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.699996" elapsed="0.000719"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.700909" elapsed="0.000354"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.707259" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.706816" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:57.707521" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.707371" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.707348" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.708063" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.707746" elapsed="0.000394"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:57.708644" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Wait_For_Stable_Ipv4_Topology_After_Listening</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.708316" elapsed="0.000356"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:12:57.709075" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:12:57.708850" elapsed="0.000279"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.709778" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.709340" elapsed="0.000471"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.710429" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.710015" elapsed="0.000450"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.711149" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:12:57.710669" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.711677" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.711374" elapsed="0.000352"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.706481" elapsed="0.005299"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.699742" elapsed="0.012087"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.698001" elapsed="0.013870"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:12:57.536815" elapsed="0.175140">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s2-t17" name="Check_For_Empty_Ipv4_Topology_After_Listening" line="217">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:57.715466" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:57.715196" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.716799" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.716687" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.716667" elapsed="0.000201"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.721740" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.721634" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.721615" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.722811" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:57.722434" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.723310" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:57.722999" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:57.723380" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:12:57.723535" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:57.722037" elapsed="0.001522"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.731373" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.731212" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.731183" elapsed="0.000292"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.733235" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.733127" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.733080" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.733750" level="INFO">${karaf_connection_index} = 25</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.733450" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.734180" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.733937" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.734969" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.734704" elapsed="0.000928">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.735819" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:57.735864" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.734366" elapsed="0.001521"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.736730" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.736460" elapsed="0.000950">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.737595" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:57.737640" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.736056" elapsed="0.001607"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.738592" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.737958" elapsed="0.000694">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.737738" elapsed="0.001025">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.737719" elapsed="0.001076">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.738956" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.739200" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.739040" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.739024" elapsed="0.000251"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.739307" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.741931" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:12:57.742170" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.740843" elapsed="0.001456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.742572" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.742906" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.740125" elapsed="0.002978"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.739577" elapsed="0.003594"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.732671" elapsed="0.010583">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</kw>
<msg time="2026-04-17T03:12:57.743355" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.743398" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.731708" elapsed="0.011713"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.743603" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.743497" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.743478" elapsed="0.000189"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.744732" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.744628" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.744611" elapsed="0.000187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.745079" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.745200" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.744954" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.745641" level="INFO">{1: 25}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.745380" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.746078" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.745838" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.746663" elapsed="0.000256"/>
</kw>
<msg time="2026-04-17T03:12:57.747016" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.747060" level="INFO">${old_connection_index} = 25</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.746299" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.747915" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.749316" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.748899" elapsed="0.001267">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.748424" elapsed="0.001839"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.750928" elapsed="0.000292"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.750471" elapsed="0.000830"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:57.747397" elapsed="0.003950"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.747175" elapsed="0.004220"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.747156" elapsed="0.004263"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.752288" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.751949" elapsed="0.000365"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:57.752362" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:12:57.752512" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.751627" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.752694" elapsed="0.000443"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.753416" level="INFO">index=26
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.753514" level="INFO">${karaf_connection_object} = index=26
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.753310" elapsed="0.000230"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.753691" elapsed="0.002526"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.756650" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:57.757786" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.756386" elapsed="0.001817">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.772223" elapsed="0.000427"/>
</kw>
<msg time="2026-04-17T03:12:57.772743" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.770856" elapsed="0.002043"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.773077" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.773265" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.758991" elapsed="0.014356"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.758483" elapsed="0.014909"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.744335" elapsed="0.029139">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.773814" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.773887" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.730679" elapsed="0.043365">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:57.774185" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.774229" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.723934" elapsed="0.050318"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.774583" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.774329" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.774310" elapsed="0.000384"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:57.723790" elapsed="0.050932"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:57.723616" elapsed="0.051140"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:57.721271" elapsed="0.053544"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:57.716392" elapsed="0.058479"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.715882" elapsed="0.059034"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:57.712990" elapsed="0.061977"/>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:57.780970" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.778399" elapsed="0.004264">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.782929" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.782764" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.782743" elapsed="0.000262"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.783038" elapsed="0.000015"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.777951" elapsed="0.005212">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.783339" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.783405" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.777435" elapsed="0.006067">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:12:57.783608" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.783652" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.776933" elapsed="0.006743"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.783834" elapsed="0.028937"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:57.813818" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.813687" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.813663" elapsed="0.000223"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.814419" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.814043" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:12:57.813266" elapsed="0.001338">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.814733" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.776455" elapsed="0.038380">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.815009" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.775833" elapsed="0.039308">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.775488" elapsed="0.039751">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.816582" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:57.816257" elapsed="0.000368"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:57.815852" elapsed="0.000824"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.817501" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.817122" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.817102" elapsed="0.000498"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.817753" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.823234" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.822803" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:57.823479" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.823337" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.823319" elapsed="0.000222"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.823984" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.823687" elapsed="0.000323"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:57.824470" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_For_Empty_Ipv4_Topology_After_Listening</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.824186" elapsed="0.000311"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:12:57.824832" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:12:57.824658" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.825376" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.825012" elapsed="0.000393"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.825908" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.825593" elapsed="0.000343"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.826546" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:12:57.826107" elapsed="0.000530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.827108" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.826796" elapsed="0.000363"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.822487" elapsed="0.004726"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.816895" elapsed="0.010367"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:57.815540" elapsed="0.011762"/>
</kw>
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:12:57.712404" elapsed="0.114936">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s2-t18" name="Delete_Bgp_Peer_Configuration" line="223">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:12:57.830797" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:12:57.830531" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.832248" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.832034" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.832015" elapsed="0.000338"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.838893" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.838788" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.838769" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.839977" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:57.839586" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.840518" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:57.840182" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:57.840588" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:12:57.840744" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:57.839207" elapsed="0.001562"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.846375" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.846268" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.846248" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.847652" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.847547" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.847527" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.848182" level="INFO">${karaf_connection_index} = 26</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.847866" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.848628" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.848411" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.849419" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.849167" elapsed="0.000885">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.850250" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:12:57.850296" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.848816" elapsed="0.001503"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.851130" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.850866" elapsed="0.000909">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:12:57.851960" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:12:57.852006" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.850525" elapsed="0.001504"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.853321" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.852652" elapsed="0.000733">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.852127" elapsed="0.001326">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.852105" elapsed="0.001379">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.853646" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.853875" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.853732" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.853715" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.853981" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.856728" elapsed="0.000149"/>
</kw>
<msg time="2026-04-17T03:12:57.856939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.855445" elapsed="0.001622"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.857365" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.857697" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.854804" elapsed="0.003074"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.854268" elapsed="0.003676"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.847238" elapsed="0.010790">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</status>
</kw>
<msg time="2026-04-17T03:12:57.858204" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.858249" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.846596" elapsed="0.011677"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.858493" elapsed="0.000195"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.858353" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.858330" elapsed="0.000415"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.859560" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:57.859454" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.859436" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.859901" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.860003" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.859778" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.860541" level="INFO">{1: 26}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.860240" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.860984" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.860740" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.861619" elapsed="0.000309"/>
</kw>
<msg time="2026-04-17T03:12:57.862205" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:57.862283" level="INFO">${old_connection_index} = 26</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.861242" elapsed="0.001076"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.863542" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.865453" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.864851" elapsed="0.001892">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.864082" elapsed="0.002804"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.867903" elapsed="0.000481"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.867225" elapsed="0.001290"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:12:57.862766" elapsed="0.005816"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.862433" elapsed="0.006221"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.862405" elapsed="0.006285"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:57.869683" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.869361" elapsed="0.000349"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:57.869757" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:12:57.869908" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.868995" elapsed="0.000938"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.870112" elapsed="0.000574"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.870967" level="INFO">index=27
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:57.871070" level="INFO">${karaf_connection_object} = index=27
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:57.870858" elapsed="0.000257"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.871267" elapsed="0.002430"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:57.874193" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:57.875327" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.873865" elapsed="0.001837">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:57.889895" elapsed="0.000404"/>
</kw>
<msg time="2026-04-17T03:12:57.890387" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.888534" elapsed="0.001999"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.890694" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.890869" elapsed="0.000026"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:57.876824" elapsed="0.014135"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:57.875979" elapsed="0.015026"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.859163" elapsed="0.032075">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.891597" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.891715" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.845917" elapsed="0.045908">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:12:57.891935" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:57.891992" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.841163" elapsed="0.050856"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.892428" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.892124" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.892082" elapsed="0.000425"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:57.840996" elapsed="0.051535"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:57.840824" elapsed="0.051741"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:12:57.838425" elapsed="0.054199"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:12:57.831740" elapsed="0.060941"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:57.831263" elapsed="0.061463"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:12:57.828397" elapsed="0.064383"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.893554" level="INFO">&amp;{mapping} = { DEVICE_NAME=controller-config | BGP_NAME=example-bgp-peer | IP=10.30.171.117 | BGP_RIB_OPENCONFIG=example-bgp-rib }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>BGP_NAME=${BGP_PEER_NAME}</arg>
<arg>IP=${TOOLS_SYSTEM_IP}</arg>
<arg>BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.892954" elapsed="0.000629"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.936982" level="INFO">${file_path_stream} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:57.936603" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:12:57.937794" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.937526" elapsed="0.000336">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-17T03:12:57.937955" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:12:57.937191" elapsed="0.000788"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.938555" level="INFO">${file_path} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:57.938169" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-17T03:12:57.938881" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer/location.uri"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-17T03:12:57.939043" level="INFO">${template} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,$BGP_RIB_OPENCONFIG/bgp-openconfig-ext...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-17T03:12:57.938743" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.939493" level="INFO">rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,$BGP_RIB_OPENCONFIG/bgp-openconfig-extensions:bgp/neighbors/neighbor=$IP
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.939248" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.940518" level="INFO">mapping: {'DEVICE_NAME': 'controller-config', 'BGP_NAME': 'example-bgp-peer', 'IP': '10.30.171.117', 'BGP_RIB_OPENCONFIG': 'example-bgp-rib'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.940238" elapsed="0.000325"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.940986" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.940725" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.941690" level="INFO">${value} = controller-config</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:12:57.941393" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:57.942572" level="INFO">${encoded} = controller-config</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.942289" elapsed="0.000309"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:12:57.942647" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:12:57.942798" level="INFO">${encoded_value} = controller-config</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:12:57.941949" elapsed="0.000874"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.942976" elapsed="0.000249"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">controller-config</var>
<status status="PASS" start="2026-04-17T03:12:57.941257" elapsed="0.002009"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.943808" level="INFO">${value} = example-bgp-peer</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:12:57.943511" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:57.944591" level="INFO">${encoded} = example-bgp-peer</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.944377" elapsed="0.000240"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:12:57.944666" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:12:57.944814" level="INFO">${encoded_value} = example-bgp-peer</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:12:57.944022" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.944990" elapsed="0.000240"/>
</kw>
<var name="${key}">BGP_NAME</var>
<var name="${value}">example-bgp-peer</var>
<status status="PASS" start="2026-04-17T03:12:57.943378" elapsed="0.001894"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.945812" level="INFO">${value} = 10.30.171.117</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:12:57.945517" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:57.946565" level="INFO">${encoded} = 10.30.171.117</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.946356" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:12:57.946639" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:12:57.946944" level="INFO">${encoded_value} = 10.30.171.117</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:12:57.946025" elapsed="0.000944"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.947135" elapsed="0.000225"/>
</kw>
<var name="${key}">IP</var>
<var name="${value}">10.30.171.117</var>
<status status="PASS" start="2026-04-17T03:12:57.945384" elapsed="0.002017"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.947945" level="INFO">${value} = example-bgp-rib</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:12:57.947646" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:57.948739" level="INFO">${encoded} = example-bgp-rib</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.948526" elapsed="0.000239"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:12:57.948814" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:12:57.948962" level="INFO">${encoded_value} = example-bgp-rib</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:12:57.948176" elapsed="0.000810"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:57.949154" elapsed="0.000219"/>
</kw>
<var name="${key}">BGP_RIB_OPENCONFIG</var>
<var name="${value}">example-bgp-rib</var>
<status status="PASS" start="2026-04-17T03:12:57.947512" elapsed="0.001900"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-17T03:12:57.941061" elapsed="0.008386"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-17T03:12:57.949489" elapsed="0.000026"/>
</return>
<msg time="2026-04-17T03:12:57.949643" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'controller-config', 'BGP_NAME': 'example-bgp-peer', 'IP': '10.30.171.117', 'BGP_RIB_OPENCONFIG': 'example-bgp-rib'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-17T03:12:57.939903" elapsed="0.009765"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:57.939604" elapsed="0.010096"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.949874" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.949724" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:57.939585" elapsed="0.010364"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.953811" level="INFO">${final_text} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensi...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:57.950107" elapsed="0.003734"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-17T03:12:57.953926" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="PASS" start="2026-04-17T03:12:57.935932" elapsed="0.018125"/>
</kw>
<msg time="2026-04-17T03:12:57.954128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:57.923130" elapsed="0.031045"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.966532" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.978788" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.991017" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.991224" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.991401" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.991769" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:57.991622" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:12:57.991608" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.991987" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.992173" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.992340" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-17T03:12:57.991580" elapsed="0.000830"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.991475" elapsed="0.000961"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:57.992584" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:57.992658" elapsed="0.000016"/>
</return>
<msg time="2026-04-17T03:12:57.992780" level="INFO">${uri} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensi...</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-17T03:12:57.918740" elapsed="0.074067"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:57.993909" level="INFO">rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:57.993658" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:57.999010" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.996116" elapsed="0.004585">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:12:57.994058" elapsed="0.006724">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.000970" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:58.000816" elapsed="0.000215"/>
</branch>
<status status="FAIL" start="2026-04-17T03:12:57.994040" elapsed="0.007014">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.001450" elapsed="0.000025"/>
</kw>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:58.001522" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="FAIL" start="2026-04-17T03:12:57.993073" elapsed="0.008552">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:12:58.001688" elapsed="0.000016"/>
</return>
<arg>${BGP_VARIABLES_FOLDER}${/}bgp_peer</arg>
<arg>mapping=${mapping}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.893813" elapsed="0.107967">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.003106" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:58.002779" elapsed="0.000373"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:12:58.002412" elapsed="0.000791"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.004204" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:58.003630" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:58.003612" elapsed="0.000680"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.004470" elapsed="0.000314"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.009747" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:58.009343" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:58.009986" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:58.009847" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:58.009829" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.010636" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:12:58.010337" elapsed="0.000325"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:12:58.011081" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Delete_Bgp_Peer_Configuration</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:12:58.010820" elapsed="0.000317"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:12:58.011552" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:12:58.011355" elapsed="0.000224"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.012077" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:58.011735" elapsed="0.000387"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.012611" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:58.012279" elapsed="0.000361"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.013247" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:12:58.012795" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.013783" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:58.013481" elapsed="0.000350"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:12:58.009022" elapsed="0.004864"/>
</kw>
<status status="PASS" start="2026-04-17T03:12:58.003420" elapsed="0.010514"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:12:58.002103" elapsed="0.011872"/>
</kw>
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<status status="FAIL" start="2026-04-17T03:12:57.827774" elapsed="0.186240">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.016013" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:12:58.039959" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:12:58.040244" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:58.015875" elapsed="0.024439"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:12:58.040449" elapsed="0.000071"/>
</return>
<msg time="2026-04-17T03:12:58.040795" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:12:58.015598" elapsed="0.025251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.041788" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:58.041228" elapsed="0.000652"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.043961" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:12:58.044217" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:12:58.043245" elapsed="0.001032"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:12:58.044877" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-17T03:12:58.044579" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:58.044454" elapsed="0.000671"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.045500" elapsed="0.000060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.045938" elapsed="0.000047"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.046377" elapsed="0.000053"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:12:58.042445" elapsed="0.004156"/>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:12:58.015287" elapsed="0.031428"/>
</kw>
<arg>KillPythonTool.Search_And_Kill_Remote_Python</arg>
<arg>'play\.py'</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:58.014871" elapsed="0.031964"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Sysstat_Statistics" owner="Utils">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.049266" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:58.049414" level="INFO">${current_connection} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:58.049063" elapsed="0.000390"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.051321" level="INFO">${odl_connection} = 28</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:58.050665" elapsed="0.000696"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.054130" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:12:58.054267" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:12:58.053695" elapsed="0.000610"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.054591" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.056599" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:12:58.803884" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:12:58 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:10:51 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:12:58.055988" elapsed="0.748049"/>
</kw>
<msg time="2026-04-17T03:12:58.804140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.055424" elapsed="0.748808"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:12:58.052878" elapsed="0.751466"/>
</kw>
<msg time="2026-04-17T03:12:58.804395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.052184" elapsed="0.752271"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:12:58.051643" elapsed="0.752888"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-17T03:12:58.804582" elapsed="0.000039"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.179 and return its identifier.</doc>
<status status="PASS" start="2026-04-17T03:12:58.049854" elapsed="0.754893"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.806448" level="INFO">sar -A -f /var/log/sa/sa*</msg>
<arg>sar -A -f /var/log/sa/sa*</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-17T03:12:58.804973" elapsed="0.001534"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.809978" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<msg time="2026-04-17T03:12:58.810127" level="INFO">${output} = [?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<var>${output}</var>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:12:58.806682" elapsed="0.003475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.810667" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:58.810331" elapsed="0.000470"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:58.810962" elapsed="0.000190"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:12:58.811199" elapsed="0.000033"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:12:58.815128" elapsed="0.000149"/>
</kw>
<msg time="2026-04-17T03:12:58.815324" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.814404" elapsed="0.000983"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.815549" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.815713" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:58.811564" elapsed="0.004233"/>
</kw>
<doc>Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
that node was running. Used for debug purposes. Returns whole output of sysstat.</doc>
<status status="PASS" start="2026-04-17T03:12:58.048347" elapsed="0.767542"/>
</kw>
<arg>Utils.Get_Sysstat_Statistics</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:58.047269" elapsed="0.768667"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:58.816176" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:12:58.816083" elapsed="0.000251"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:12:58.816483" elapsed="0.000377"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:12:58.014647" elapsed="0.802272"/>
</kw>
<doc>BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used.

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 suite uses play.py as single iBGP peer.
The suite only looks at example-ipv4-topology, so RIB is not examined.

The suite consists of two halves, differing on which side initiates BGP connection.
State of "work is being done" is detected by increasing value of prefixes in topology.
The time for Wait_For_Stable_* cases to finish is the main performance metric.
After waiting for stability is done, full check on number of prefixes present is performed.

Brief description how to configure BGP peer can be found here:
https://wiki.opendaylight.org/view/BGP_LS_PCEP:User_Guide#BGP_Peer
http://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html#bgp-peering

TODO: Currently, if a bug causes prefix count to remain at zero,
affected test cases will wait for max time. Reconsider.
If zero is allowed as stable, higher period or repetitions would be required.

The prefix counting is quite heavyweight and may induce large variation in time.
Try the other version of the suite (singlepeer_changecount.robot) to get better precision.</doc>
<status status="FAIL" start="2026-04-17T03:10:50.937528" elapsed="127.879425"/>
</suite>
<suite id="s1-s3" name="Singlepeer Changecount" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.914242" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:58.909965" elapsed="0.004333"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:12:58.909718" elapsed="0.004651"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.919798" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:12:58.915802" elapsed="0.004024"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:12:58.920042" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:58.919915" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:58.919890" elapsed="0.000237"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.920644" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:58.920290" elapsed="0.000397"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.921188" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:12:58.920854" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:12:58.921744" elapsed="0.000287"/>
</kw>
<msg time="2026-04-17T03:12:58.922149" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:12:58.922197" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:58.921398" elapsed="0.000822"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.922760" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:58.922393" elapsed="0.000393"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.923800" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:58.923534" elapsed="0.000360"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.924334" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:58.924053" elapsed="0.000309"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.924826" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:12:58.924529" elapsed="0.000325"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:12:58.928330" elapsed="0.000533"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.929528" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:58.929076" elapsed="0.000495"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:58.929733" elapsed="0.000270"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.930987" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:12:58.930671" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:12:58.931060" elapsed="0.000057"/>
</return>
<msg time="2026-04-17T03:12:58.931243" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:58.930283" elapsed="0.000985"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:12:58.931977" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543be77350&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:12:58.931432" elapsed="0.000724"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:12:58.932329" elapsed="0.000197"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:12:58.927641" elapsed="0.004944"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:58.927419" elapsed="0.005210"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:12:58.924911" elapsed="0.007750"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.933347" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:58.932833" elapsed="0.000579"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.934038" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:58.933600" elapsed="0.000500"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.934665" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:12:58.934274" elapsed="0.000433"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:12:58.923061" elapsed="0.011703"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:12:58.915450" elapsed="0.019368"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:58.935013" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:58.934883" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:58.934864" elapsed="0.000216"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.938548" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:12:58.937967" elapsed="0.000617"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.939155" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:12:58.938795" elapsed="0.000387"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:12:58.939228" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:12:58.939385" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:12:58.937615" elapsed="0.001794"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:58.940498" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:58.940216" elapsed="0.000309"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.941318" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:58.941428" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:58.941126" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:58.945155" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:58.944550" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:58.944529" elapsed="0.000840"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.946054" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:58.946325" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:58.945593" elapsed="0.000788"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.947354" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:58.946659" elapsed="0.000801"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.948649" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:58.947735" elapsed="0.000966"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:12:58.950489" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:12:58.950669" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:12:58.950128" elapsed="0.000584"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.951057" elapsed="0.000493"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:12:58.952732" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:12:59.275503" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:12:58 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:12:58 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:12:58.952396" elapsed="0.323253"/>
</kw>
<msg time="2026-04-17T03:12:59.275735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.951905" elapsed="0.323994"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:12:58.949188" elapsed="0.326861"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:12:59.276975" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:12:59.290743" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:12:59.291178" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:12:59.291416" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:12:59.276474" elapsed="0.015051"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:59.292260" elapsed="0.001166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:59.296210" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:59.294872" elapsed="0.001579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:12:59.297671" elapsed="0.000121"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:59.297000" elapsed="0.000967"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:59.296938" elapsed="0.001116"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:12:59.298849" elapsed="0.000136"/>
</return>
<status status="PASS" start="2026-04-17T03:12:59.298281" elapsed="0.000876"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:59.298241" elapsed="0.000959"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:12:59.299261" elapsed="0.000016"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:59.302870" elapsed="0.000493"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:59.303643" elapsed="0.000292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:59.304293" elapsed="0.000222"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:59.299749" elapsed="0.004836"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:12:58.943580" elapsed="0.361213"/>
</kw>
<msg time="2026-04-17T03:12:59.304853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.942731" elapsed="0.362176"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:12:58.942241" elapsed="0.362751"/>
</kw>
<msg time="2026-04-17T03:12:59.305035" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:58.941642" elapsed="0.363439"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:59.307870" elapsed="0.000404"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:59.308455" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:59.308838" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:59.305408" elapsed="0.003613"/>
</kw>
<msg time="2026-04-17T03:12:59.309147" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:12:58.940747" elapsed="0.368427"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:59.309718" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:59.309407" elapsed="0.000363"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:12:59.309821" elapsed="0.000035"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:12:58.939774" elapsed="0.370198"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:58.939589" elapsed="0.370424"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:12:58.939460" elapsed="0.370590"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:12:58.935358" elapsed="0.374781"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:12:59.310321" elapsed="0.000217"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:12:59.324560" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:12:59.324450" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:59.324428" elapsed="0.000202"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:59.324926" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:59.325030" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:59.324788" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:59.325511" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:59.325238" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:12:59.326007" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:12:59.325757" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:59.326881" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:12:59.326647" elapsed="0.000343">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:12:59.327100" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:12:59.327181" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:59.326249" elapsed="0.000957"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:12:59.327531" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:12:59.327296" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-17T03:12:59.327276" elapsed="0.000354"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:12:59.328412" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:12:59.328130" elapsed="0.000309"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:12:59.328487" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:12:59.328637" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:12:59.327834" elapsed="0.000827"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:59.328828" elapsed="0.000442"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:12:59.329553" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:12:59.329652" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:12:59.329447" elapsed="0.000231"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:12:59.329831" elapsed="0.002543"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:12:59.332813" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:12:59.333996" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:12:59.332548" elapsed="0.001907">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:12:59.337709" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:12:59.338249" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:12:59.338558" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:12:59.335314" elapsed="0.003392"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:12:59.334744" elapsed="0.004006"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:12:59.324156" elapsed="0.014681">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:00.358241" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:00.358070" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:00.358037" elapsed="0.000287"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:00.358734" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:00.358854" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:00.358543" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:00.359487" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:00.359047" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:00.359955" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:00.359699" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:00.360623" elapsed="0.000189"/>
</kw>
<msg time="2026-04-17T03:13:00.360913" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:13:00.360960" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:00.360192" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:00.361919" elapsed="0.000145"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:13:00.362800" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:13:00.362617" elapsed="0.000733">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:00.362274" elapsed="0.001140"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:00.363923" elapsed="0.000101"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:00.363590" elapsed="0.000480"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:13:00.361321" elapsed="0.002811"/>
</kw>
<status status="PASS" start="2026-04-17T03:13:00.361061" elapsed="0.003146"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:00.361042" elapsed="0.003203"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:13:00.365127" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:00.364838" elapsed="0.000317"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:13:00.365206" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:13:00.365365" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:13:00.364502" elapsed="0.000888"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:00.365552" elapsed="0.000418"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:00.366272" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:00.366372" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:00.366163" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:13:00.366552" elapsed="0.002581"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:13:00.369571" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:13:00.370749" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:13:00.369306" elapsed="0.001855">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:00.374400" elapsed="0.000368"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:00.374937" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:00.375265" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:13:00.371986" elapsed="0.003430"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:13:00.371456" elapsed="0.004007"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:13:00.357575" elapsed="0.017976">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:01.393940" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:01.393789" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:01.393758" elapsed="0.000272"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:01.394457" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:01.394579" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:01.394269" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:01.395085" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:01.394774" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:01.395610" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:01.395316" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:01.396275" elapsed="0.000191"/>
</kw>
<msg time="2026-04-17T03:13:01.396566" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:13:01.396613" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:01.395832" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:01.397490" elapsed="0.000139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:13:01.398331" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:13:01.398151" elapsed="0.000738">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:01.397801" elapsed="0.001151"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:01.399506" elapsed="0.000106"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:01.399148" elapsed="0.000509"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:13:01.396949" elapsed="0.002752"/>
</kw>
<status status="PASS" start="2026-04-17T03:13:01.396712" elapsed="0.003038"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:01.396693" elapsed="0.003081"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:13:01.400590" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:01.400317" elapsed="0.000300"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:13:01.400664" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:13:01.400824" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:13:01.400005" elapsed="0.000844"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:01.401012" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:01.401743" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:01.401846" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:01.401634" elapsed="0.000238"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:13:01.402025" elapsed="0.002610"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:13:01.405073" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:13:01.406439" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:13:01.404807" elapsed="0.002031">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:01.409955" elapsed="0.000379"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:01.410504" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:01.410866" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:13:01.407707" elapsed="0.003311"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:13:01.407161" elapsed="0.003903"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:13:01.393336" elapsed="0.017828">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.429854" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:02.429707" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.429677" elapsed="0.000276"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.430364" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:02.430509" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.430169" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.431051" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:02.430733" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.431613" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:02.431318" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.432373" elapsed="0.000221"/>
</kw>
<msg time="2026-04-17T03:13:02.432702" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:13:02.432749" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.431850" elapsed="0.000923"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:02.433716" elapsed="0.000158"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.434693" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.434485" elapsed="0.000792">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.434075" elapsed="0.001275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.435892" elapsed="0.000130"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.435541" elapsed="0.000529"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:13:02.433086" elapsed="0.003044"/>
</kw>
<status status="PASS" start="2026-04-17T03:13:02.432849" elapsed="0.003331"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.432830" elapsed="0.003376"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:13:02.436989" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.436712" elapsed="0.000304"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:13:02.437065" elapsed="0.000049"/>
</return>
<msg time="2026-04-17T03:13:02.437246" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:13:02.436426" elapsed="0.000844"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.437437" elapsed="0.000424"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.438166" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:02.438272" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.438038" elapsed="0.000261"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.438455" elapsed="0.002496"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.441485" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:13:02.442799" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.441212" elapsed="0.001993">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:02.446386" elapsed="0.000360"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.446916" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.447314" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:13:02.444020" elapsed="0.003473"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:13:02.443494" elapsed="0.004047"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.429265" elapsed="0.018363">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:13:02.447722" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:12:59.311347" elapsed="3.136471">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:12:59.310929" elapsed="3.136955"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:12:59.310749" elapsed="3.137178"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:12:59.310597" elapsed="3.137367"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:12:58.914677" elapsed="3.533349"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.450816" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:02.450702" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.450681" elapsed="0.000202"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.455565" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:02.455460" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.455443" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.456628" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:13:02.456212" elapsed="0.000443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.457139" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:13:02.456821" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:13:02.457210" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:13:02.457362" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:13:02.455858" elapsed="0.001529"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.462894" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:02.462782" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.462763" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.464234" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:02.464079" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.464060" elapsed="0.000244"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:13:02.464855" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.464517" elapsed="0.000370"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.465382" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:02.465128" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.466625" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.466170" elapsed="0.001190">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:13:02.467513" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:13:02.467562" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.465600" elapsed="0.001987"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.468765" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.468313" elapsed="0.001293">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:13:02.469749" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:13:02.469797" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.467766" elapsed="0.002055"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.470858" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.470170" elapsed="0.000771">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:13:02.469899" elapsed="0.001180">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:13:02.469880" elapsed="0.001252">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:02.471309" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:02.471557" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:02.471396" elapsed="0.000310"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:02.471378" elapsed="0.000355"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.471767" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:02.473927" elapsed="0.000540"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.474834" elapsed="0.000314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.475498" elapsed="0.000244"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:13:02.473035" elapsed="0.002805"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:13:02.472038" elapsed="0.003941"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.463781" elapsed="0.012290">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</status>
</kw>
<msg time="2026-04-17T03:13:02.476201" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:02.476248" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.463144" elapsed="0.013129"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.476474" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:02.476353" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.476333" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.477478" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:02.477358" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.477339" elapsed="0.000208"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.478022" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:02.478154" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.477709" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.478677" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:02.478389" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.479166" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:02.478888" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.479773" elapsed="0.000295"/>
</kw>
<msg time="2026-04-17T03:13:02.480189" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:13:02.480237" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.479384" elapsed="0.000878"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:02.481600" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.483260" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.482970" elapsed="0.000752">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.482132" elapsed="0.001696"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.484894" elapsed="0.000201"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.484086" elapsed="0.001170"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:13:02.480601" elapsed="0.004737"/>
</kw>
<status status="PASS" start="2026-04-17T03:13:02.480341" elapsed="0.005048"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.480320" elapsed="0.005097"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:13:02.486410" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.485938" elapsed="0.000506"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:13:02.486500" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:13:02.486661" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:13:02.485647" elapsed="0.001038"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.486849" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.487573" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:02.487677" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.487459" elapsed="0.000244"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.487857" elapsed="0.002426"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.490744" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:13:02.491802" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.490473" elapsed="0.001726">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:02.496084" elapsed="0.000812"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.497197" elapsed="0.000592"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:02.498014" elapsed="0.000205"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:13:02.493084" elapsed="0.005219"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:13:02.492507" elapsed="0.005846"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.476996" elapsed="0.021450">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:02.498841" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:02.498916" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:13:02.462468" elapsed="0.036556">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:13:02.499150" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:02.499196" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.457762" elapsed="0.041458"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:02.499573" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:02.499300" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:02.499280" elapsed="0.000372"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:13:02.457613" elapsed="0.042063"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:13:02.457440" elapsed="0.042266"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:13:02.455173" elapsed="0.044592"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:13:02.448700" elapsed="0.051121"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:02.448245" elapsed="0.051617"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:12:58.909379" elapsed="3.590548"/>
</kw>
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:02.504382" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854401ed350&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:13:02.503981" elapsed="0.000559"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:13:02.503551" elapsed="0.001058"/>
</kw>
<kw name="CC_Setup" owner="ChangeCounter">
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:02.509282" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543bfa1810&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:13:02.508811" elapsed="0.000593"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:13:02.508367" elapsed="0.001122"/>
</kw>
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:13:02.510547" elapsed="0.000038"/>
</return>
<msg time="2026-04-17T03:13:02.510793" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:13:02.510339" elapsed="0.000484"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.515473" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:13:02.511018" elapsed="0.004504"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:13:02.515908" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:13:02.516141" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:13:02.515717" elapsed="0.000451"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.522287" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:13:02.516342" elapsed="0.005995"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:13:02.510061" elapsed="0.012340"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:13:02.509738" elapsed="0.012722"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:13:02.522910" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:13:02.523150" level="INFO">${counter} = ['Get_Change_Count', [], {}]</msg>
<var>${counter}</var>
<arg>Get_Change_Count</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:13:02.522692" elapsed="0.000486"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.527739" level="INFO">${ChangeCounter__getter} = ['Get_Change_Count', [], {}]</msg>
<arg>${ChangeCounter__getter}</arg>
<arg>${counter}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:13:02.523431" elapsed="0.004355"/>
</kw>
<doc>Initialize dependency libraries.</doc>
<status status="PASS" start="2026-04-17T03:13:02.504826" elapsed="0.023018"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:13:02.528983" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:13:02.529206" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:13:02.528807" elapsed="0.000424"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.529823" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:13:02.529442" elapsed="0.000423"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:13:02.530252" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:13:02.530461" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:13:02.530051" elapsed="0.000436"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.531039" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:13:02.530657" elapsed="0.000424"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:13:02.528574" elapsed="0.002581"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:13:02.528311" elapsed="0.002891"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:13:02.528037" elapsed="0.003209"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:02.531712" level="INFO">Creating Session using : alias=operational, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854401e9410&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=125</arg>
<arg>max_retries=0</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:13:02.531395" elapsed="0.000426"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="PASS" start="2026-04-17T03:13:02.531991" elapsed="0.000190"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:02.532340" elapsed="0.000178"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:13:02.534293" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:13:02.534368" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:13:02.534002" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:02.534554" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:13:02.535733" level="INFO">Logging into '10.30.171.117:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:13:03.238738" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:13:02 UTC 2026

  System load:  0.0                Processes:             107
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.117
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:10:54 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:13:02.535417" elapsed="0.703480"/>
</kw>
<msg time="2026-04-17T03:13:03.238984" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:02.535039" elapsed="0.704028"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:13:02.533532" elapsed="0.705684"/>
</kw>
<msg time="2026-04-17T03:13:03.239277" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:02.533053" elapsed="0.706273"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-17T03:13:02.532719" elapsed="0.706689"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.240980" level="INFO">Executing command 'python3 --help'.</msg>
<msg time="2026-04-17T03:13:03.253338" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:13:03.253462" level="INFO">${stdout} = usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_ins...</msg>
<msg time="2026-04-17T03:13:03.253604" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:13:03.253648" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:13:03.240761" elapsed="0.012910"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.254592" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:13:03.254292" elapsed="0.000346"/>
</kw>
<msg time="2026-04-17T03:13:03.254733" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:13:03.254777" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.253866" elapsed="0.000934"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.255448" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:13:03.254976" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.255951" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:03.255563" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.255539" elapsed="0.000502"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:13:03.256217" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-17T03:13:03.256113" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.256081" elapsed="0.000224"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.256393" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.256359" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:03.256344" elapsed="0.000110"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.256603" elapsed="0.000021"/>
</kw>
<msg time="2026-04-17T03:13:03.256750" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>python3 --help</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:13:03.240380" elapsed="0.016394"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:13:03.256935" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-17T03:13:03.256844" elapsed="0.000144"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.256826" elapsed="0.000186"/>
</if>
<kw name="Fatal Error" owner="BuiltIn">
<arg>Python 3 is not installed!</arg>
<doc>Stops the whole test execution.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.257177" elapsed="0.000022"/>
</kw>
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="PASS" start="2026-04-17T03:13:03.239877" elapsed="0.017378"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.258522" level="INFO">Executing command 'bash -c 'cd "." &amp;&amp; python -c "import ipaddr"''.</msg>
<msg time="2026-04-17T03:13:03.322084" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:13:03.322483" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:13:03.322602" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:13:03.322697" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:13:03.258340" elapsed="0.064410"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.325283" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:13:03.324437" elapsed="0.000953"/>
</kw>
<msg time="2026-04-17T03:13:03.325607" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:13:03.325705" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.323317" elapsed="0.002437"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.327163" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:13:03.326182" elapsed="0.001043"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.328267" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:03.327416" elapsed="0.000997"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.327366" elapsed="0.001103"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:13:03.328896" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-17T03:13:03.328666" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.328559" elapsed="0.000565"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.329657" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.329251" elapsed="0.000466"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:03.329219" elapsed="0.000529"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.329958" elapsed="0.000031"/>
</kw>
<msg time="2026-04-17T03:13:03.330200" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>bash -c 'cd "${target_dir}" &amp;&amp; python -c "import ipaddr"'</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:13:03.257944" elapsed="0.072368"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:13:03.330548" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-17T03:13:03.330416" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.330391" elapsed="0.000266"/>
</if>
<kw name="Put File" owner="SSHLibrary">
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py</arg>
<arg>${target_dir}/</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.330876" elapsed="0.000030"/>
</kw>
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="PASS" start="2026-04-17T03:13:03.257505" elapsed="0.073485"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.366776" level="INFO">[chan 3] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-17T03:13:03.381327" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py' -&gt; '/home/jenkins//play.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:13:03.331232" elapsed="0.050193"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.382399" level="INFO">${timeout} = 560.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER_CHANGE_COUNT_SINGLE} * (${COUNT_CHANGE_COUNT_SINGLE} * 9.0 / 10000 + 20)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:03.381712" elapsed="0.000724"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.389123" level="INFO">${bgp_filling_timeout} = 560.0</msg>
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:13:03.382681" elapsed="0.006514"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.397392" level="INFO">${bgp_emptying_timeout} = 420.0</msg>
<arg>${bgp_emptying_timeout}</arg>
<arg>${bgp_filling_timeout*3.0/4}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:13:03.389489" elapsed="0.007951"/>
</kw>
<doc>Setup imported resources, SSH-login to tools system,
create HTTP session, put Python tool to tools system.</doc>
<status status="PASS" start="2026-04-17T03:12:58.908964" elapsed="4.488578"/>
</kw>
<test id="s1-s3-t1" name="Check_For_Empty_Ipv4_Topology_Before_Talking" line="88">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.401495" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:03.401226" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.401201" elapsed="0.000437"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:13:03.400993" elapsed="0.000696"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.402778" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.402661" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.402642" elapsed="0.000207"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.408119" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.407961" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.407936" elapsed="0.000266"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.409302" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:13:03.408876" elapsed="0.000453"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.409923" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:13:03.409514" elapsed="0.000436"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:13:03.409995" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:13:03.410185" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:13:03.408469" elapsed="0.001741"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.416173" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.415993" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.415972" elapsed="0.000279"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.417626" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.417494" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.417474" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:13:03.418279" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:03.417919" elapsed="0.000388"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.418802" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:03.418553" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.419683" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.419391" elapsed="0.001038">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:13:03.420627" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:13:03.420676" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.419001" elapsed="0.001700"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.421613" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.421343" elapsed="0.001039">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:13:03.422605" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:13:03.422653" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.420894" elapsed="0.001783"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.423833" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.422998" elapsed="0.000900">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:13:03.422760" elapsed="0.001212">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:13:03.422739" elapsed="0.001267">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.424202" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.424470" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:03.424309" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:03.424289" elapsed="0.000259"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.424583" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:03.427490" elapsed="0.000159"/>
</kw>
<msg time="2026-04-17T03:13:03.427717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:03.426193" elapsed="0.001658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.428161" elapsed="0.000086"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.428547" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:13:03.425457" elapsed="0.003279"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:13:03.424875" elapsed="0.003958"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.417137" elapsed="0.011805">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</kw>
<msg time="2026-04-17T03:13:03.429056" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:03.429123" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.416422" elapsed="0.012728"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.429350" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.429232" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.429210" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.430637" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.430525" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.430504" elapsed="0.000201"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.431033" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:03.431213" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:03.430889" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.431700" level="INFO">{1: 13}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:03.431410" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.432221" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:13:03.431922" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:03.432886" elapsed="0.000322"/>
</kw>
<msg time="2026-04-17T03:13:03.433315" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:13:03.433363" level="INFO">${old_connection_index} = 13</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.432471" elapsed="0.000918"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:03.434438" elapsed="0.000220"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.435812" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.435393" elapsed="0.001346">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.434850" elapsed="0.001991"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:13:03.437556" elapsed="0.000312"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.437024" elapsed="0.000937"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:13:03.433730" elapsed="0.004310"/>
</kw>
<status status="PASS" start="2026-04-17T03:13:03.433482" elapsed="0.004683"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.433461" elapsed="0.004739"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:13:03.439128" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:13:03.438780" elapsed="0.000377"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:13:03.439207" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:13:03.439382" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:13:03.438433" elapsed="0.000980"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:13:03.439584" elapsed="0.000483"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.440411" level="INFO">index=16
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:13:03.440518" level="INFO">${karaf_connection_object} = index=16
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:13:03.440287" elapsed="0.000258"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:13:03.440703" elapsed="0.002613"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:13:03.443762" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:13:03.444968" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.443492" elapsed="0.001881">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:13:03.459768" elapsed="0.000719"/>
</kw>
<msg time="2026-04-17T03:13:03.460579" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:13:03.457996" elapsed="0.002736"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.460913" elapsed="0.000027"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.461099" elapsed="0.000037"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:13:03.446381" elapsed="0.014822"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:13:03.445671" elapsed="0.015646"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.429846" elapsed="0.031570">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.461798" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.461884" elapsed="0.000024"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.415632" elapsed="0.046386">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:13:03.462153" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:03.462200" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.410619" elapsed="0.051606"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.462618" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:03.462339" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.462290" elapsed="0.000409"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:13:03.410463" elapsed="0.052261"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:13:03.410276" elapsed="0.052483"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:13:03.407537" elapsed="0.055284"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:13:03.402351" elapsed="0.060534"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.401854" elapsed="0.061082"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:13:03.398589" elapsed="0.064407"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:03.470041" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.466838" elapsed="0.004943">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.472060" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:03.471885" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:03.471863" elapsed="0.000313"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.472210" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.466382" elapsed="0.005939">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.472499" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.472564" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.465783" elapsed="0.006880">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:03.472771" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:03.472816" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:03.465282" elapsed="0.007595"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:03.473047" elapsed="0.030953"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:03.505074" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:03.504940" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:03.504915" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:03.505712" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.505338" elapsed="0.000453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:03.504511" elapsed="0.001396">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:03.505967" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.464769" elapsed="0.041297">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:03.506262" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.464098" elapsed="0.042275">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.463729" elapsed="0.042739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:04.515585" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:04.511905" elapsed="0.006535">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:04.518962" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:04.518638" elapsed="0.000407"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:04.518592" elapsed="0.000493"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:04.519166" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:04.511249" elapsed="0.008163">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:04.519697" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:04.519802" elapsed="0.000026"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:04.510380" elapsed="0.009658">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:04.520247" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:04.520319" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:04.509521" elapsed="0.010834"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:04.520612" elapsed="0.045785"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:04.567488" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:04.567350" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:04.567326" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:04.568164" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:04.567728" elapsed="0.000516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:04.566884" elapsed="0.001479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:04.568425" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:04.508769" elapsed="0.059756">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:04.568703" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:04.507905" elapsed="0.060911">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:04.507235" elapsed="0.061677">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:05.581723" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:05.577571" elapsed="0.006073">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:05.583986" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:05.583776" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:05.583747" elapsed="0.000322"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:05.584132" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:05.576455" elapsed="0.007803">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:05.584523" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:05.584591" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:05.575042" elapsed="0.009651">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:05.584820" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:05.584867" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:05.573704" elapsed="0.011188"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:05.585063" elapsed="0.029733"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:05.615910" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:05.615773" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:05.615748" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:05.616565" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:05.616174" elapsed="0.000471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:05.615333" elapsed="0.001432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:05.616827" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:05.572462" elapsed="0.044466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:05.617127" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:05.571010" elapsed="0.046230">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:05.569897" elapsed="0.047438">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:06.629260" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:06.625565" elapsed="0.006482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:06.632725" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:06.632385" elapsed="0.000438"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:06.632341" elapsed="0.000520"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:06.632914" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:06.624650" elapsed="0.008437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:06.633382" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:06.633452" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:06.623346" elapsed="0.010220">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:06.633685" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:06.633730" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:06.621806" elapsed="0.011948"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:06.633921" elapsed="0.026322"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:06.661294" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:06.661156" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:06.661130" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:06.661995" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:06.661565" elapsed="0.000505">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:06.660693" elapsed="0.001547">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:06.662337" elapsed="0.000023"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:06.620660" elapsed="0.041789">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:06.662631" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:06.619349" elapsed="0.043402">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:06.618328" elapsed="0.044519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:07.675803" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:07.671019" elapsed="0.006946">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:07.678323" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:07.678111" elapsed="0.000269"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:07.678064" elapsed="0.000344"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:07.678446" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:07.669971" elapsed="0.008614">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:07.678776" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:07.678844" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:07.668663" elapsed="0.010285">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:07.679072" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:07.679149" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:07.667409" elapsed="0.011774"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:07.679368" elapsed="0.030289"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:07.710705" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:07.710567" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:07.710542" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:07.711336" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:07.710942" elapsed="0.000470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:07.710130" elapsed="0.001412">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:07.711607" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:07.666224" elapsed="0.045485">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:07.711888" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:07.664814" elapsed="0.047185">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:07.663783" elapsed="0.048331">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:08.725056" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:08.721444" elapsed="0.006310">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:08.728217" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:08.727924" elapsed="0.000388"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:08.727888" elapsed="0.000462"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:08.728403" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:08.720211" elapsed="0.008364">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:08.728902" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:08.729003" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:08.718833" elapsed="0.010339">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:08.729352" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:08.729417" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:08.717380" elapsed="0.012072"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:08.729636" elapsed="0.032755"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:08.763453" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:08.763312" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:08.763287" elapsed="0.000237"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:08.764069" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:08.763691" elapsed="0.000473">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:08.762864" elapsed="0.001416">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:08.764340" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:08.715890" elapsed="0.048549">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:08.764617" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:08.714437" elapsed="0.050289">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:08.713223" elapsed="0.051672">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:09.776941" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:09.772762" elapsed="0.007060">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:09.780327" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:09.780001" elapsed="0.000411"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:09.779962" elapsed="0.000488"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:09.780507" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:09.771890" elapsed="0.008795">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:09.780957" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:09.781055" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:09.770532" elapsed="0.010697">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:09.781406" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:09.781473" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:09.769281" elapsed="0.012230"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:09.781762" elapsed="0.030173"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:09.812941" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:09.812806" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:09.812782" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:09.813564" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:09.813191" elapsed="0.000447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:09.812393" elapsed="0.001357">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:09.813811" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:09.767958" elapsed="0.045954">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:09.814180" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:09.766666" elapsed="0.047629">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:09.765726" elapsed="0.048663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:10.825961" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:10.822299" elapsed="0.006479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:10.829259" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:10.828958" elapsed="0.000451"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:10.828923" elapsed="0.000526"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:10.829501" elapsed="0.000028"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:10.821645" elapsed="0.008032">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:10.829937" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:10.830033" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:10.820337" elapsed="0.009894">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:10.830407" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:10.830470" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:10.818994" elapsed="0.011511"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:10.830703" elapsed="0.029343"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:10.861066" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:10.860929" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:10.860904" elapsed="0.000254"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:10.861756" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:10.861322" elapsed="0.000510">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:10.860512" elapsed="0.001435">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:10.862083" elapsed="0.000037"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:10.817717" elapsed="0.044492">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:10.862392" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:10.816419" elapsed="0.046086">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:10.815400" elapsed="0.047220">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:11.875158" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:11.870906" elapsed="0.006835">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:11.878209" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:11.877912" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:11.877874" elapsed="0.000453"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:11.878378" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:11.869794" elapsed="0.008865">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:11.878942" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:11.879040" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:11.868470" elapsed="0.010739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:11.879383" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:11.879447" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:11.867195" elapsed="0.012285"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:11.879674" elapsed="0.027101"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:11.907771" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:11.907639" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:11.907615" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:11.908378" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:11.908000" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:11.907222" elapsed="0.001414">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:11.908698" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:11.865893" elapsed="0.042907">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:11.908982" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:11.864565" elapsed="0.044548">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:11.863574" elapsed="0.045639">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:12.916878" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:12.913730" elapsed="0.005421">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:12.919519" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:12.919301" elapsed="0.000282"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:12.919269" elapsed="0.000346"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:12.919654" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:12.913224" elapsed="0.006579">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:12.920066" elapsed="0.000056"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:12.920187" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:12.912539" elapsed="0.007793">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:12.920496" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:12.920544" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:12.911841" elapsed="0.008727"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:12.920756" elapsed="0.038720"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:12.960632" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:12.960497" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:12.960470" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:12.961255" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:12.960867" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:12.960050" elapsed="0.001399">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:12.961510" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:12.911281" elapsed="0.050329">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:12.961790" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:12.910507" elapsed="0.051395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:12.909854" elapsed="0.052142">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:13.973740" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:13.970030" elapsed="0.005629">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:13.975968" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:13.975779" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:13.975755" elapsed="0.000296"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:13.976105" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:13.968999" elapsed="0.007227">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:13.976410" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:13.976478" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:13.967731" elapsed="0.008847">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:13.976754" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:13.976801" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:13.966478" elapsed="0.010348"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:13.976995" elapsed="0.026650"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:14.004671" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:14.004537" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:14.004512" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:14.005336" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:14.004904" elapsed="0.000506">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:14.004115" elapsed="0.001409">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:14.005586" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:13.965277" elapsed="0.040414">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:14.005869" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:13.963955" elapsed="0.042025">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:13.962889" elapsed="0.043185">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:15.014431" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:15.010810" elapsed="0.006117">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:15.017339" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:15.017072" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:15.017041" elapsed="0.000403"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:15.017490" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:15.010207" elapsed="0.007429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:15.017870" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:15.018025" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:15.009509" elapsed="0.008667">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:15.018321" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:15.018377" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:15.008792" elapsed="0.009618"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:15.018630" elapsed="0.035752"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:15.055474" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:15.055337" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:15.055312" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:15.056083" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:15.055716" elapsed="0.000460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:15.054899" elapsed="0.001393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:15.056354" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:15.008150" elapsed="0.048303">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:15.056636" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:15.007407" elapsed="0.049348">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:15.006770" elapsed="0.050080">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:16.066261" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:16.062721" elapsed="0.006238">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:16.069424" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:16.069151" elapsed="0.000356"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:16.069114" elapsed="0.000503"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:16.069677" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:16.062071" elapsed="0.007778">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:16.070182" elapsed="0.000035"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:16.070286" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:16.061254" elapsed="0.009184">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:16.070605" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:16.070673" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:16.060382" elapsed="0.010328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:16.070895" elapsed="0.030021"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:16.101960" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:16.101823" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:16.101798" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:16.102754" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:16.102318" elapsed="0.000512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:16.101395" elapsed="0.001553">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:16.103010" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:16.059643" elapsed="0.043485">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:16.103311" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:16.058819" elapsed="0.044602">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:16.057734" elapsed="0.045783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:17.112018" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:17.108396" elapsed="0.006256">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:17.115188" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:17.114902" elapsed="0.000368"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:17.114865" elapsed="0.000443"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:17.115360" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:17.107782" elapsed="0.007737">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:17.115778" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:17.115876" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:17.107049" elapsed="0.008968">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:17.116203" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:17.116263" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:17.106320" elapsed="0.009979"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:17.116537" elapsed="0.034246"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:17.151871" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:17.151727" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:17.151700" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:17.152521" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:17.152132" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:17.151272" elapsed="0.001449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:17.152784" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:17.105631" elapsed="0.047257">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:17.153137" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:17.104870" elapsed="0.048384">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:17.104215" elapsed="0.049136">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:18.165530" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:18.161190" elapsed="0.006274">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:18.167767" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:18.167582" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:18.167557" elapsed="0.000291"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:18.167885" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:18.160198" elapsed="0.007803">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:18.168201" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:18.168270" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:18.158930" elapsed="0.009442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:18.168488" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:18.168534" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:18.157755" elapsed="0.010803"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:18.168729" elapsed="0.026617"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:18.196401" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:18.196266" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:18.196242" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:18.196989" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:18.196630" elapsed="0.000431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:18.195818" elapsed="0.001373">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:18.197253" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:18.156614" elapsed="0.040739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:18.197530" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:18.155209" elapsed="0.042432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:18.154239" elapsed="0.043621">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:19.208876" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:19.205011" elapsed="0.006810">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:19.212295" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:19.212004" elapsed="0.000373"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:19.211966" elapsed="0.000456"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:19.212488" elapsed="0.000031"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:19.204398" elapsed="0.008281">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:19.212943" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:19.213043" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:19.203607" elapsed="0.009637">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:19.213422" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:19.213488" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:19.202813" elapsed="0.010711"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:19.213802" elapsed="0.029473"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:19.244300" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:19.244163" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:19.244138" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:19.244891" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:19.244533" elapsed="0.000431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:19.243721" elapsed="0.001355">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:19.245155" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:19.201352" elapsed="0.043904">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:19.245503" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:19.199789" elapsed="0.045830">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:19.198745" elapsed="0.046972">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:20.257524" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:20.253835" elapsed="0.006484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:20.260811" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:20.260510" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:20.260466" elapsed="0.000446"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:20.260950" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:20.253128" elapsed="0.007954">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:20.261300" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:20.261373" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:20.251882" elapsed="0.009596">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:20.261613" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:20.261661" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:20.250354" elapsed="0.011332"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:20.261868" elapsed="0.035969"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:20.298969" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:20.298814" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:20.298786" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:20.299648" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:20.299244" elapsed="0.000484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:20.298356" elapsed="0.001553">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:20.300060" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:20.249138" elapsed="0.051048">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:20.300371" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:20.247792" elapsed="0.052695">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:20.246707" elapsed="0.053878">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:21.311855" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:21.306763" elapsed="0.007104">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:21.314216" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:21.313997" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:21.313970" elapsed="0.000331"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:21.314351" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:21.305757" elapsed="0.008723">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:21.314678" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:21.314764" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:21.304879" elapsed="0.009990">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:21.314994" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:21.315040" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:21.304032" elapsed="0.011034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:21.315264" elapsed="0.032759"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:21.349159" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:21.348997" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:21.348970" elapsed="0.000264"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:21.349813" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:21.349403" elapsed="0.000489">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:21.348553" elapsed="0.001637">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:21.350258" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:21.303259" elapsed="0.047101">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:21.350543" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:21.302348" elapsed="0.048308">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:21.301437" elapsed="0.049315">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:22.362222" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:22.358300" elapsed="0.006372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:22.364996" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:22.364800" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:22.364773" elapsed="0.000307"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:22.365138" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:22.357472" elapsed="0.007788">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:22.365448" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:22.365516" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:22.356565" elapsed="0.009054">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:22.365740" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:22.365787" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:22.355519" elapsed="0.010294"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:22.365982" elapsed="0.038804"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:22.405979" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:22.405793" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:22.405760" elapsed="0.000317"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:22.406753" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:22.406273" elapsed="0.000559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:22.405313" elapsed="0.001642">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:22.407019" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:22.353996" elapsed="0.053142">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:22.407322" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:22.352455" elapsed="0.055028">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:22.351482" elapsed="0.056105">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:23.420229" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:23.415892" elapsed="0.007026">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:23.423371" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:23.423111" elapsed="0.000341"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:23.423054" elapsed="0.000433"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:23.423538" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:23.414875" elapsed="0.008824">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:23.423955" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:23.424051" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:23.413591" elapsed="0.010624">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:23.424377" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:23.424441" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:23.412166" elapsed="0.012309"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:23.424784" elapsed="0.028848"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:23.454648" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:23.454513" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:23.454489" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:23.455271" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:23.454881" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:23.454076" elapsed="0.001385">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:23.455524" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:23.410983" elapsed="0.044640">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:23.455802" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:23.409635" elapsed="0.046276">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:23.408533" elapsed="0.047474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:24.465281" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:24.461257" elapsed="0.006927">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:24.468687" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:24.468371" elapsed="0.000402"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:24.468327" elapsed="0.000486"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:24.468871" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:24.460606" elapsed="0.008458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:24.469374" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:24.469500" elapsed="0.000026"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:24.459807" elapsed="0.009848">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:24.469922" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:24.469994" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:24.458992" elapsed="0.011042"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:24.470362" elapsed="0.039538"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:24.511662" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:24.511482" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:24.511449" elapsed="0.000314"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:24.512646" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:24.512080" elapsed="0.000671">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:24.510642" elapsed="0.002259">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:24.512969" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:24.458234" elapsed="0.054839">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:24.513276" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:24.457434" elapsed="0.055965">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:24.456718" elapsed="0.056829">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:25.526182" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:25.522307" elapsed="0.005924">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:25.528551" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:25.528355" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:25.528328" elapsed="0.000307"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:25.528673" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:25.521278" elapsed="0.007516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:25.529051" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:25.529139" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:25.519969" elapsed="0.009276">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:25.529368" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:25.529422" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:25.518458" elapsed="0.010989"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:25.529621" elapsed="0.031779"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:25.562416" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:25.562278" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:25.562253" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:25.563013" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:25.562649" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:25.561845" elapsed="0.001372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:25.563279" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:25.517156" elapsed="0.046224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:25.563561" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:25.515654" elapsed="0.048067">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:25.514629" elapsed="0.049208">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:26.574510" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:26.570637" elapsed="0.005876">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:26.577050" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:26.576743" elapsed="0.000411"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:26.576708" elapsed="0.000484"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:26.577254" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:26.569977" elapsed="0.007419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:26.577592" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:26.577673" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:26.569161" elapsed="0.008621">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:26.577910" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:26.577958" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:26.568033" elapsed="0.009950"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:26.578178" elapsed="0.031814"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:26.611006" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:26.610872" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:26.610848" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:26.611616" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:26.611255" elapsed="0.000436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:26.610457" elapsed="0.001348">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:26.611864" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:26.566942" elapsed="0.045020">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:26.612158" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:26.565749" elapsed="0.046521">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:26.564755" elapsed="0.047609">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:27.624993" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:27.620920" elapsed="0.006082">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:27.627340" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:27.627147" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:27.627121" elapsed="0.000301"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:27.627460" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:27.619552" elapsed="0.008028">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:27.627764" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:27.627833" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:27.618118" elapsed="0.009817">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:27.628053" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:27.628115" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:27.616840" elapsed="0.011301"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:27.628312" elapsed="0.034433"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:27.663791" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:27.663654" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:27.663629" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:27.664425" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:27.664028" elapsed="0.000474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:27.663227" elapsed="0.001390">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:27.664678" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:27.615687" elapsed="0.049090">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:27.664953" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:27.614406" elapsed="0.050656">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:27.613301" elapsed="0.051880">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:28.678064" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:28.673695" elapsed="0.006384">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:28.680501" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:28.680247" elapsed="0.000314"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:28.680213" elapsed="0.000375"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:28.680627" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:28.672622" elapsed="0.008135">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:28.680956" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:28.681023" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:28.671256" elapsed="0.009887">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:28.681286" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:28.681332" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:28.669914" elapsed="0.011442"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:28.681524" elapsed="0.036319"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:28.719054" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:28.718865" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:28.718838" elapsed="0.000308"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:28.719776" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:28.719343" elapsed="0.000517">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:28.718377" elapsed="0.001623">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:28.720066" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:28.668725" elapsed="0.051466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:28.720372" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:28.667345" elapsed="0.053140">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:28.666186" elapsed="0.054488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:29.730549" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:29.726713" elapsed="0.005808">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:29.732850" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:29.732650" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:29.732623" elapsed="0.000311"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:29.732971" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:29.726043" elapsed="0.007066">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:29.733297" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:29.733365" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:29.725264" elapsed="0.008203">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:29.733590" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:29.733636" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:29.724416" elapsed="0.009244"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:29.733831" elapsed="0.042302"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:29.777504" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:29.777328" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:29.777291" elapsed="0.000323"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:29.778381" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:29.777872" elapsed="0.000621">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:29.776709" elapsed="0.001956">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:29.778744" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:29.723389" elapsed="0.055493">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:29.779257" elapsed="0.000035"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:29.722347" elapsed="0.057089">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:29.721438" elapsed="0.058149">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:30.792217" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:30.788391" elapsed="0.005929">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:30.794730" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:30.794478" elapsed="0.000313"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:30.794437" elapsed="0.000381"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:30.794859" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:30.787331" elapsed="0.007660">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:30.795223" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:30.795302" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:30.785864" elapsed="0.009540">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:30.795573" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:30.795624" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:30.784564" elapsed="0.011084"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:30.795823" elapsed="0.034483"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:30.831359" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:30.831222" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:30.831197" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:30.831970" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:30.831594" elapsed="0.000452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:30.830769" elapsed="0.001409">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:30.832315" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:30.783179" elapsed="0.049239">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:30.832598" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:30.781753" elapsed="0.050955">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:30.780594" elapsed="0.052209">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:31.842510" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:31.838750" elapsed="0.006429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:31.845675" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:31.845351" elapsed="0.000413"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:31.845315" elapsed="0.000489"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:31.845855" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:31.838084" elapsed="0.007939">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:31.846304" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:31.846400" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:31.837277" elapsed="0.009264">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:31.846708" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:31.846771" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:31.836477" elapsed="0.010328"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:31.847039" elapsed="0.030177"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:31.878294" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:31.878152" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:31.878125" elapsed="0.000244"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:31.878940" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:31.878535" elapsed="0.000482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:31.877697" elapsed="0.001549">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:31.879314" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:31.835723" elapsed="0.043712">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:31.879635" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:31.834765" elapsed="0.045013">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:31.833796" elapsed="0.046092">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:32.892969" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:32.888035" elapsed="0.006860">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:32.895220" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:32.895015" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:32.894989" elapsed="0.000320"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:32.895346" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:32.887032" elapsed="0.008431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:32.895645" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:32.895713" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:32.885727" elapsed="0.010088">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:32.895930" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:32.895976" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:32.884432" elapsed="0.011570"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:32.896186" elapsed="0.029123"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:32.926776" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:32.926598" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:32.926565" elapsed="0.000307"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:32.927568" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:32.927149" elapsed="0.000493">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:32.925958" elapsed="0.001796">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:32.927816" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:32.883286" elapsed="0.044630">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:32.928112" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:32.881922" elapsed="0.046305">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:32.880830" elapsed="0.047499">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:33.941592" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:33.937412" elapsed="0.006152">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:33.943898" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:33.943695" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:33.943667" elapsed="0.000317"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:33.944021" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:33.936237" elapsed="0.007926">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:33.944354" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:33.944422" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:33.934850" elapsed="0.009675">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:33.944723" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:33.944771" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:33.933459" elapsed="0.011337"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:33.944967" elapsed="0.028767"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:33.974770" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:33.974598" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:33.974574" elapsed="0.000264"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:33.975380" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:33.975001" elapsed="0.000453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:33.974189" elapsed="0.001379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:33.975654" elapsed="0.000026"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:33.932003" elapsed="0.043776">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:33.976000" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:33.930569" elapsed="0.045571">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:33.929312" elapsed="0.046926">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:34.988023" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:34.983999" elapsed="0.006187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:34.990552" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:34.990311" elapsed="0.000321"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:34.990285" elapsed="0.000384"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:34.990715" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:34.983145" elapsed="0.007700">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:34.991087" elapsed="0.000047"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:34.991301" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:34.982037" elapsed="0.009404">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:34.991594" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:34.991654" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:34.980998" elapsed="0.010689"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:34.991916" elapsed="0.031543"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:35.024606" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:35.024434" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:35.024407" elapsed="0.000295"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:35.025310" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:35.024898" elapsed="0.000494">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:35.023965" elapsed="0.001549">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:35.025575" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:34.980035" elapsed="0.045651">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:35.025917" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:34.978731" elapsed="0.047309">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:34.977381" elapsed="0.048776">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:36.038050" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:36.033717" elapsed="0.006245">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:36.040284" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:36.040080" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:36.040055" elapsed="0.000376"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:36.040473" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:36.032738" elapsed="0.007854">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:36.040775" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:36.040843" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:36.031527" elapsed="0.009417">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:36.041059" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:36.041122" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:36.030366" elapsed="0.010782"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:36.041316" elapsed="0.028084"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:36.070495" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:36.070352" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:36.070321" elapsed="0.000243"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:36.071142" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:36.070750" elapsed="0.000479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:36.069880" elapsed="0.001463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:36.071404" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:36.029257" elapsed="0.042270">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:36.071711" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:36.027996" elapsed="0.043857">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:36.026996" elapsed="0.044972">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:37.083552" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:37.079845" elapsed="0.005783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:37.086032" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:37.085841" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:37.085814" elapsed="0.000321"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:37.086174" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:37.079167" elapsed="0.007126">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:37.086504" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:37.086580" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:37.078281" elapsed="0.008404">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:37.086806" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:37.086852" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:37.077430" elapsed="0.009448"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:37.087049" elapsed="0.027545"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:37.115620" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:37.115483" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:37.115456" elapsed="0.000235"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:37.116240" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:37.115853" elapsed="0.000498">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:37.115039" elapsed="0.001434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:37.116534" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:37.076079" elapsed="0.040554">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:37.116812" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:37.074315" elapsed="0.042609">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:37.073051" elapsed="0.043968">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:38.128289" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:38.124993" elapsed="0.005287">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:38.130614" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:38.130408" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:38.130380" elapsed="0.000315"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:38.130733" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:38.123869" elapsed="0.006984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:38.131039" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:38.131127" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:38.122648" elapsed="0.008581">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:38.131359" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:38.131415" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:38.121452" elapsed="0.009988"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:38.131616" elapsed="0.027586"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:38.160272" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:38.160132" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:38.160081" elapsed="0.000262"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:38.160960" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:38.160513" elapsed="0.000526">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:38.159676" elapsed="0.001497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:38.161234" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:38.120277" elapsed="0.041055">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:38.161509" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:38.118852" elapsed="0.042767">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:38.117860" elapsed="0.043925">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:39.174106" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:39.169378" elapsed="0.006617">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:39.176316" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:39.176130" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:39.176104" elapsed="0.000294"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:39.176435" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:39.168396" elapsed="0.008156">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:39.176731" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:39.176797" elapsed="0.000014"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:39.167180" elapsed="0.009714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:39.177009" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:39.177053" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:39.165978" elapsed="0.011100"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:39.177261" elapsed="0.027574"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:39.205876" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:39.205742" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:39.205717" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:39.206494" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:39.206126" elapsed="0.000442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:39.205287" elapsed="0.001394">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:39.206740" elapsed="0.000016"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:39.164825" elapsed="0.042013">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:39.207099" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:39.163586" elapsed="0.043629">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:39.162641" elapsed="0.044686">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:40.218553" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:40.214957" elapsed="0.006379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:40.221773" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:40.221505" elapsed="0.000353"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:40.221471" elapsed="0.000424"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:40.222021" elapsed="0.000041"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:40.214185" elapsed="0.008079">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:40.222538" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:40.222625" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:40.212875" elapsed="0.009851">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:40.222847" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:40.222891" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:40.211690" elapsed="0.011225"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:40.223082" elapsed="0.033642"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:40.258178" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:40.257928" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:40.257895" elapsed="0.000384"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:40.259029" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:40.258512" elapsed="0.000645">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:40.257341" elapsed="0.001984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:40.259505" elapsed="0.000027"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:40.210543" elapsed="0.049115">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:40.259923" elapsed="0.000034"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:40.209233" elapsed="0.050877">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:40.208209" elapsed="0.052049">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:41.272994" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:41.268064" elapsed="0.006859">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:41.275263" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:41.275047" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:41.275021" elapsed="0.000326"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:41.275383" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:41.267076" elapsed="0.008424">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:41.275686" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:41.275754" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:41.265848" elapsed="0.010008">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:41.275977" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:41.276052" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:41.264668" elapsed="0.011419"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:41.276288" elapsed="0.027562"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:41.304914" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:41.304777" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:41.304753" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:41.305536" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:41.305167" elapsed="0.000442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:41.304351" elapsed="0.001444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:41.305860" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:41.263541" elapsed="0.042421">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:41.306159" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:41.262172" elapsed="0.044101">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:41.261204" elapsed="0.045166">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:42.317465" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:42.313789" elapsed="0.007005">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:42.321272" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:42.320971" elapsed="0.000385"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:42.320933" elapsed="0.000472"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:42.321470" elapsed="0.000031"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:42.312953" elapsed="0.008731">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:42.321951" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:42.322047" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:42.312106" elapsed="0.010112">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:42.322401" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:42.322472" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:42.310992" elapsed="0.011527"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:42.322797" elapsed="0.031550"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:42.355449" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:42.355311" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:42.355286" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:42.356311" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:42.355682" elapsed="0.000712">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:42.354813" elapsed="0.001720">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:42.356608" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:42.309803" elapsed="0.046930">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:42.356965" elapsed="0.000028"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:42.308363" elapsed="0.048762">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:42.307355" elapsed="0.049897">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:43.370018" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:43.365463" elapsed="0.006459">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:43.372243" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:43.372042" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:43.372017" elapsed="0.000310"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:43.372363" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:43.364364" elapsed="0.008117">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:43.372661" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:43.372729" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:43.363037" elapsed="0.009812">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:43.372985" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:43.373032" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:43.361757" elapsed="0.011299"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:43.373300" elapsed="0.031414"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:43.405752" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:43.405616" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:43.405591" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:43.406395" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:43.405989" elapsed="0.000483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:43.405194" elapsed="0.001396">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:43.406652" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:43.360603" elapsed="0.046154">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:43.406937" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:43.359267" elapsed="0.047781">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:43.358200" elapsed="0.048984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:44.419484" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:44.415750" elapsed="0.005669">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:44.421733" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:44.421540" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:44.421515" elapsed="0.000300"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:44.421851" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:44.414754" elapsed="0.007217">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:44.422170" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:44.422239" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:44.413473" elapsed="0.008866">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:44.422520" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:44.422566" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:44.411983" elapsed="0.010608"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:44.422759" elapsed="0.033857"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:44.457765" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:44.457622" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:44.457595" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:44.458428" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:44.458010" elapsed="0.000496">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:44.457144" elapsed="0.001479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:44.458688" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:44.410664" elapsed="0.048123">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:44.458964" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:44.409221" elapsed="0.049855">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:44.408058" elapsed="0.051132">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:45.468530" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:45.464599" elapsed="0.006748">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:45.471823" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:45.471549" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:45.471512" elapsed="0.000429"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:45.471991" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:45.463932" elapsed="0.008250">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:45.472526" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:45.472623" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:45.463143" elapsed="0.009670">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:45.472984" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:45.473047" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:45.462351" elapsed="0.010730"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:45.473379" elapsed="0.037678"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:45.512182" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:45.512027" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:45.512003" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:45.512846" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:45.512422" elapsed="0.000512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:45.511579" elapsed="0.001506">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:45.513187" elapsed="0.000029"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:45.461595" elapsed="0.051743">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:45.513571" elapsed="0.000029"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:45.460638" elapsed="0.053073">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:45.459865" elapsed="0.053950">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:46.522682" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:46.518969" elapsed="0.006315">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:46.525797" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:46.525525" elapsed="0.000344"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:46.525488" elapsed="0.000415"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:46.525951" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:46.518336" elapsed="0.007795">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:46.526391" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:46.526487" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:46.517534" elapsed="0.009092">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:46.526791" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:46.526853" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:46.516704" elapsed="0.010183"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:46.527134" elapsed="0.041068"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:46.569325" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:46.569160" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:46.569133" elapsed="0.000268"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:46.569962" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:46.569574" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:46.568699" elapsed="0.001501">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:46.570265" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:46.516000" elapsed="0.054366">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:46.570545" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:46.515241" elapsed="0.055416">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:46.514545" elapsed="0.056209">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:47.584014" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:47.579180" elapsed="0.006868">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:47.586430" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:47.586203" elapsed="0.000285"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:47.586171" elapsed="0.000344"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:47.586554" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:47.578133" elapsed="0.008545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:47.586870" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:47.586937" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:47.576757" elapsed="0.010282">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:47.587188" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:47.587235" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:47.575458" elapsed="0.011801"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:47.587429" elapsed="0.032736"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:47.621220" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:47.621066" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:47.621041" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:47.621845" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:47.621458" elapsed="0.000464">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:47.620640" elapsed="0.001395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:47.622111" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:47.574217" elapsed="0.047997">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:47.622394" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:47.572767" elapsed="0.049738">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:47.571720" elapsed="0.050880">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:48.633318" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:48.629484" elapsed="0.006180">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:48.635991" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:48.635794" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:48.635768" elapsed="0.000307"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:48.636129" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:48.628822" elapsed="0.007429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:48.636435" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:48.636502" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:48.628005" elapsed="0.008598">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:48.636727" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:48.636777" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:48.627216" elapsed="0.009585"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:48.636971" elapsed="0.030250"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:48.668321" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:48.668185" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:48.668161" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:48.668922" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:48.668554" elapsed="0.000442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:48.667736" elapsed="0.001390">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:48.669190" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:48.626132" elapsed="0.043158">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:48.669468" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:48.624724" elapsed="0.044855">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:48.623603" elapsed="0.046143">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:49.681882" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:49.678239" elapsed="0.005660">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:49.684260" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:49.684030" elapsed="0.000290"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:49.684003" elapsed="0.000344"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:49.684388" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:49.677057" elapsed="0.007465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:49.684715" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:49.684785" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:49.675666" elapsed="0.009223">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:49.685009" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:49.685055" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:49.674389" elapsed="0.010692"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:49.685272" elapsed="0.029694"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:49.716002" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:49.715851" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:49.715827" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:49.716638" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:49.716268" elapsed="0.000445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:49.715437" elapsed="0.001391">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:49.716889" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:49.673234" elapsed="0.043752">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:49.717252" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:49.671760" elapsed="0.045605">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:49.670635" elapsed="0.046824">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:50.728486" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:50.724612" elapsed="0.007045">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:50.732061" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:50.731843" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:50.731807" elapsed="0.000358"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:50.732203" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:50.723792" elapsed="0.008534">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:50.732510" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:50.732578" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:50.722320" elapsed="0.010358">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:50.732796" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:50.732842" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:50.721069" elapsed="0.011797"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:50.733033" elapsed="0.029681"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:50.763816" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:50.763674" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:50.763648" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:50.764488" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:50.764075" elapsed="0.000488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:50.763201" elapsed="0.001483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:50.764827" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:50.719900" elapsed="0.045034">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:50.765132" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:50.718933" elapsed="0.046315">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:50.718212" elapsed="0.047139">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:51.776203" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:51.771428" elapsed="0.007154">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:51.778930" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:51.778719" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:51.778689" elapsed="0.000331"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:51.779056" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:51.770637" elapsed="0.008560">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:51.779389" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:51.779457" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:51.769708" elapsed="0.009848">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:51.779683" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:51.779729" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:51.768744" elapsed="0.011009"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:51.779921" elapsed="0.041698"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:51.822687" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:51.822551" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:51.822526" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:51.823336" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:51.822925" elapsed="0.000490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:51.822116" elapsed="0.001488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:51.823667" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:51.767887" elapsed="0.055882">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:51.823953" elapsed="0.000029"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:51.766885" elapsed="0.057239">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:51.766144" elapsed="0.058090">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:52.834994" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:52.831414" elapsed="0.006284">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:52.838016" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:52.837823" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:52.837797" elapsed="0.000322"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:52.838159" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:52.830734" elapsed="0.007550">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:52.838478" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:52.838549" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:52.829901" elapsed="0.008750">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:52.838770" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:52.838816" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:52.829043" elapsed="0.009798"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:52.839014" elapsed="0.029666"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:52.869834" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:52.869700" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:52.869676" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:52.870441" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:52.870064" elapsed="0.000449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:52.869289" elapsed="0.001337">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:52.870687" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:52.827716" elapsed="0.043072">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:52.870965" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:52.826197" elapsed="0.044880">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:52.825198" elapsed="0.045993">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:53.883787" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:53.879367" elapsed="0.006395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:53.886131" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:53.885897" elapsed="0.000293"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:53.885866" elapsed="0.000350"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:53.886253" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:53.878352" elapsed="0.008022">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:53.886564" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:53.886633" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:53.877026" elapsed="0.009706">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:53.886914" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:53.886961" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:53.875746" elapsed="0.011239"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:53.887169" elapsed="0.028745"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:53.916972" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:53.916836" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:53.916811" elapsed="0.000238"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:53.917648" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:53.917272" elapsed="0.000452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:53.916406" elapsed="0.001433">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:53.917901" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:53.874555" elapsed="0.043453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:53.918203" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:53.873084" elapsed="0.045238">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:53.872046" elapsed="0.046377">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:54.932497" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:54.928560" elapsed="0.006515">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:54.935423" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:54.935222" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:54.935195" elapsed="0.000312"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:54.935544" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:54.926882" elapsed="0.008783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:54.935850" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:54.935995" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:54.925237" elapsed="0.010895">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:54.936257" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:54.936303" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:54.923309" elapsed="0.013020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:54.936527" elapsed="0.034901"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:54.972468" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:54.972326" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:54.972299" elapsed="0.000243"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:54.973101" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:54.972709" elapsed="0.000471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:54.971889" elapsed="0.001417">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:54.973369" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:54.921973" elapsed="0.051501">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:54.973656" elapsed="0.000042"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:54.920525" elapsed="0.053277">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:54.919444" elapsed="0.054458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:55.985459" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:55.982032" elapsed="0.005394">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:55.987726" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:55.987541" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:55.987517" elapsed="0.000363"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:55.987920" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:55.980864" elapsed="0.007174">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:55.988242" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:55.988311" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:55.979622" elapsed="0.008790">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:55.988528" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:55.988573" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:55.978348" elapsed="0.010250"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:55.988773" elapsed="0.027616"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:56.017425" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:56.017269" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:56.017245" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:56.018030" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:56.017662" elapsed="0.000457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:56.016835" elapsed="0.001440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:56.018339" elapsed="0.000030"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:55.977143" elapsed="0.041310">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:56.018638" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:55.975840" elapsed="0.042908">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:55.974805" elapsed="0.044072">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:57.029285" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:57.025604" elapsed="0.006180">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:57.032196" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:57.031976" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:57.031950" elapsed="0.000332"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:57.032320" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:57.024940" elapsed="0.007502">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:57.032628" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:57.032701" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:57.024142" elapsed="0.008663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:57.032922" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:57.032968" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:57.023332" elapsed="0.009661"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:57.033226" elapsed="0.029888"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:57.064270" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:57.064110" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:57.064062" elapsed="0.000300"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:57.065004" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:57.064568" elapsed="0.000543">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:57.063607" elapsed="0.001653">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:57.065339" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:57.022165" elapsed="0.043301">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:57.065703" elapsed="0.000029"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:57.020804" elapsed="0.045042">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:57.019777" elapsed="0.046186">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:58.077417" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:58.073619" elapsed="0.006626">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:58.080606" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:58.080383" elapsed="0.000291"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:58.080354" elapsed="0.000366"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:58.080778" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:58.072977" elapsed="0.007928">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:58.081122" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:58.081206" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:58.072141" elapsed="0.009174">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:58.081437" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:58.081482" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:58.070694" elapsed="0.010811"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:58.081693" elapsed="0.031474"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:58.114229" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:58.114073" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:58.114048" elapsed="0.000253"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:58.114856" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:58.114466" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:58.113641" elapsed="0.001409">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:58.115130" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:58.069506" elapsed="0.045726">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:58.115531" elapsed="0.000029"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:58.067957" elapsed="0.047702">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:58.066867" elapsed="0.048958">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:13:59.126427" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:13:59.122639" elapsed="0.006256">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:59.129278" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:13:59.129051" elapsed="0.000287"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:13:59.129014" elapsed="0.000353"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:13:59.129406" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:13:59.121997" elapsed="0.007537">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:59.129719" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:13:59.129785" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:13:59.121117" elapsed="0.008770">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:13:59.130015" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:13:59.130060" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:13:59.120328" elapsed="0.009757"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:13:59.130295" elapsed="0.032748"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:13:59.164244" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:13:59.164062" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-17T03:13:59.164035" elapsed="0.000301"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:13:59.164958" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:13:59.164539" elapsed="0.000498">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:13:59.163540" elapsed="0.001633">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:13:59.165237" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:13:59.119082" elapsed="0.046255">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:13:59.165612" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:13:59.117782" elapsed="0.047984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:13:59.116762" elapsed="0.049137">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:00.174428" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:00.170929" elapsed="0.006084">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:00.177389" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:00.177197" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:00.177164" elapsed="0.000307"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:00.177508" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:00.170315" elapsed="0.007311">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:00.177810" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:00.177877" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:00.169537" elapsed="0.008441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:00.178110" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:00.178158" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:00.168747" elapsed="0.009436"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:00.178351" elapsed="0.029488"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:00.208854" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:00.208719" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:00.208695" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:00.209476" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:00.209104" elapsed="0.000446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:00.208290" elapsed="0.001371">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:00.209793" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:00.167986" elapsed="0.041911">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:00.210076" elapsed="0.000038"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:00.167215" elapsed="0.042992">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:00.166565" elapsed="0.043739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:01.223015" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:01.218569" elapsed="0.006545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:01.225459" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:01.225255" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:01.225226" elapsed="0.000317"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:01.225581" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:01.217510" elapsed="0.008191">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:01.225885" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:01.225952" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:01.216226" elapsed="0.009824">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:01.226188" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:01.226233" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:01.214917" elapsed="0.011341"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:01.226425" elapsed="0.037110"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:01.264657" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:01.264517" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:01.264490" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:01.265346" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:01.264906" elapsed="0.000519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:01.264046" elapsed="0.001580">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:01.265701" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:01.213737" elapsed="0.052068">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:01.265985" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:01.212267" elapsed="0.053845">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:01.211236" elapsed="0.054976">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:02.277176" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:02.273358" elapsed="0.006613">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:02.280459" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:02.280148" elapsed="0.000399"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:02.280105" elapsed="0.000485"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:02.280648" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:02.272435" elapsed="0.008392">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:02.281058" elapsed="0.000047"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:02.281163" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:02.271321" elapsed="0.009985">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:02.281488" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:02.281582" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:02.270257" elapsed="0.011363"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:02.281826" elapsed="0.044026"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:02.327287" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:02.327080" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:02.327045" elapsed="0.000349"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:02.328357" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:02.327642" elapsed="0.000814">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:02.326511" elapsed="0.002074">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:02.328649" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:02.269115" elapsed="0.059670">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:02.329057" elapsed="0.000051"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:02.267944" elapsed="0.061298">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:02.267041" elapsed="0.062348">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:03.340773" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:03.337273" elapsed="0.005424">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:03.343009" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:03.342819" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:03.342792" elapsed="0.000314"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:03.343146" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:03.336274" elapsed="0.006993">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:03.343447" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:03.343515" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:03.334970" elapsed="0.008644">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:03.343730" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:03.343774" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:03.333701" elapsed="0.010097"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:03.344022" elapsed="0.028624"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:03.373663" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:03.373529" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:03.373502" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:03.374329" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:03.373899" elapsed="0.000509">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:03.373107" elapsed="0.001417">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:03.374584" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:03.332517" elapsed="0.042166">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:03.374860" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:03.331254" elapsed="0.043715">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:03.330293" elapsed="0.044770">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:04.386256" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:04.383026" elapsed="0.005144">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:04.388493" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:04.388295" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:04.388269" elapsed="0.000306"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:04.388613" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:04.381914" elapsed="0.006819">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:04.388913" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:04.388980" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:04.380654" elapsed="0.008427">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:04.389282" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:04.389328" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:04.379441" elapsed="0.009913"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:04.389528" elapsed="0.029699"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:04.420239" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:04.420082" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:04.420059" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:04.420830" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:04.420470" elapsed="0.000434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:04.419672" elapsed="0.001345">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:04.421079" elapsed="0.000034"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:04.378203" elapsed="0.042995">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:04.421381" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:04.376914" elapsed="0.044580">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:04.375918" elapsed="0.045672">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:05.433255" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:05.428971" elapsed="0.006165">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:05.435479" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:05.435288" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:05.435261" elapsed="0.000299"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:05.435595" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:05.427967" elapsed="0.007747">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:05.435965" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:05.436034" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:05.426719" elapsed="0.009439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:05.436281" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:05.436325" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:05.425518" elapsed="0.010831"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:05.436518" elapsed="0.035425"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:05.473008" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:05.472871" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:05.472846" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:05.473637" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:05.473263" elapsed="0.000449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:05.472443" elapsed="0.001384">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:05.473886" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:05.424320" elapsed="0.049663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:05.474177" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:05.423017" elapsed="0.051271">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:05.422347" elapsed="0.052034">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:06.487337" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:06.482575" elapsed="0.006670">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:06.489620" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:06.489424" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:06.489398" elapsed="0.000305"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:06.489740" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:06.481563" elapsed="0.008296">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:06.490043" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:06.490130" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:06.480321" elapsed="0.009913">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:06.490351" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:06.490398" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:06.479021" elapsed="0.011402"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:06.490592" elapsed="0.028863"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:06.520505" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:06.520371" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:06.520346" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:06.521115" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:06.520740" elapsed="0.000450">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:06.519938" elapsed="0.001365">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:06.521366" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:06.477866" elapsed="0.043605">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:06.521651" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:06.476589" elapsed="0.045172">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:06.475475" elapsed="0.046382">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:07.535274" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:07.530657" elapsed="0.006632">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:07.537600" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:07.537408" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:07.537383" elapsed="0.000301"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:07.537721" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:07.529260" elapsed="0.008577">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:07.538022" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:07.538122" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:07.527865" elapsed="0.010374">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:07.538406" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:07.538459" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:07.526561" elapsed="0.011925"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:07.538662" elapsed="0.028580"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:07.568247" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:07.568112" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:07.568069" elapsed="0.000286"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:07.568875" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:07.568518" elapsed="0.000431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:07.567681" elapsed="0.001379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:07.569140" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:07.525396" elapsed="0.043845">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:07.569419" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:07.523987" elapsed="0.045542">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:07.522878" elapsed="0.046747">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:08.582974" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:08.579183" elapsed="0.005955">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:08.585568" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:08.585287" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:08.585252" elapsed="0.000432"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:08.585733" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:08.578486" elapsed="0.007411">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:08.586179" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:08.586277" elapsed="0.000026"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:08.577411" elapsed="0.009013">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:08.586601" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:08.586666" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:08.575834" elapsed="0.010870"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:08.586938" elapsed="0.036373"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:08.624349" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:08.624195" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:08.624170" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:08.624983" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:08.624588" elapsed="0.000473">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:08.623762" elapsed="0.001430">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:08.625253" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:08.574222" elapsed="0.051129">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:08.625528" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:08.572544" elapsed="0.053097">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:08.571004" elapsed="0.054803">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:09.637666" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:09.633200" elapsed="0.007523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:09.641418" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:09.640955" elapsed="0.000585"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:09.640904" elapsed="0.000687"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:09.641661" elapsed="0.000036"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:09.632284" elapsed="0.009606">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:09.642252" elapsed="0.000049"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:09.642394" elapsed="0.000035"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:09.631127" elapsed="0.011478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:09.642850" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:09.642935" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:09.629903" elapsed="0.013080"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:09.643364" elapsed="0.039554"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:09.684172" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:09.683990" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:09.683960" elapsed="0.000300"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:09.684934" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:09.684477" elapsed="0.000548">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:09.683478" elapsed="0.001710">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:09.685264" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:09.628881" elapsed="0.056506">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:09.685735" elapsed="0.000028"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:09.627706" elapsed="0.058170">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:09.626723" elapsed="0.059273">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:10.698715" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:10.693953" elapsed="0.006665">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:10.700961" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:10.700740" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:10.700714" elapsed="0.000338"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:10.701108" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:10.692812" elapsed="0.008419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:10.701417" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:10.701487" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:10.691499" elapsed="0.010091">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:10.701711" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:10.701759" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:10.690306" elapsed="0.011478"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:10.702006" elapsed="0.030932"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:10.734149" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:10.733993" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:10.733967" elapsed="0.000277"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:10.734806" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:10.734424" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:10.733496" elapsed="0.001523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:10.735221" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:10.689023" elapsed="0.046310">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:10.735527" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:10.687677" elapsed="0.047981">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:10.686697" elapsed="0.049063">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:11.745351" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:11.741397" elapsed="0.006794">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:11.748730" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:11.748399" elapsed="0.000422"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:11.748353" elapsed="0.000513"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:11.748927" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:11.740761" elapsed="0.008361">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:11.749369" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:11.749452" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:11.739977" elapsed="0.009598">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:11.749743" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:11.749794" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:11.739186" elapsed="0.010633"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:11.749994" elapsed="0.039363"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:11.790472" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:11.790297" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:11.790268" elapsed="0.000320"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:11.791376" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:11.790826" elapsed="0.000655">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:11.789837" elapsed="0.001939">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:11.791855" elapsed="0.000023"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:11.738381" elapsed="0.053604">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:11.792217" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:11.737560" elapsed="0.054778">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:11.736817" elapsed="0.055618">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:12.805891" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:12.801837" elapsed="0.006003">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:12.808209" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:12.807977" elapsed="0.000292"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:12.807945" elapsed="0.000352"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:12.808337" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:12.800728" elapsed="0.007734">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:12.808650" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:12.808744" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:12.799278" elapsed="0.009587">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:12.809004" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:12.809057" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:12.797793" elapsed="0.011292"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:12.809283" elapsed="0.040244"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:12.850644" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:12.850507" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:12.850481" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:12.851317" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:12.850884" elapsed="0.000514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:12.850064" elapsed="0.001452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:12.851576" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:12.796505" elapsed="0.055169">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:12.851852" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:12.794411" elapsed="0.057549">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:12.793383" elapsed="0.058671">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:13.860154" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:13.856752" elapsed="0.005893">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:13.863041" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:13.862796" elapsed="0.000332"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:13.862763" elapsed="0.000398"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:13.863209" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:13.856201" elapsed="0.007158">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:13.863635" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:13.863721" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:13.855446" elapsed="0.008401">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:13.864055" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:13.864128" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:13.854732" elapsed="0.009428"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:13.864379" elapsed="0.041285"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:13.906897" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:13.906733" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:13.906702" elapsed="0.000281"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:13.907704" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:13.907213" elapsed="0.000582">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:13.906220" elapsed="0.001718">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:13.908014" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:13.854080" elapsed="0.054075">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:13.908387" elapsed="0.000028"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:13.853361" elapsed="0.055167">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:13.852727" elapsed="0.055922">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:14.919460" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:14.915563" elapsed="0.006242">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:14.922141" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:14.921929" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:14.921903" elapsed="0.000323"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:14.922263" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:14.914893" elapsed="0.007491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:14.922565" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:14.922698" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:14.914126" elapsed="0.008677">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:14.922922" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:14.922968" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:14.913204" elapsed="0.009789"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:14.923178" elapsed="0.036044"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:14.960290" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:14.960139" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:14.960112" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:14.960919" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:14.960529" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:14.959699" elapsed="0.001429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:14.961191" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:14.912255" elapsed="0.049034">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:14.961467" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:14.910702" elapsed="0.050897">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:14.909610" elapsed="0.052087">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:15.974296" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:15.969667" elapsed="0.006527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:15.976499" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:15.976312" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:15.976287" elapsed="0.000356"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:15.976684" elapsed="0.000040"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:15.968646" elapsed="0.008192">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:15.977024" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:15.977113" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:15.967353" elapsed="0.009867">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:15.977337" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:15.977383" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:15.966155" elapsed="0.011253"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:15.977577" elapsed="0.031497"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:16.010117" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:16.009966" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:16.009942" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:16.010727" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:16.010356" elapsed="0.000448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:16.009544" elapsed="0.001375">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:16.010979" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:15.964941" elapsed="0.046137">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:16.011274" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:15.963631" elapsed="0.047754">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:15.962659" elapsed="0.048822">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:17.020741" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:17.016888" elapsed="0.006745">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:17.024318" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:17.024008" elapsed="0.000398"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:17.023968" elapsed="0.000481"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:17.024508" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:17.016241" elapsed="0.008452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:17.024974" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:17.025081" elapsed="0.000046"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:17.015421" elapsed="0.009873">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:17.025474" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:17.025545" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:17.014573" elapsed="0.011012"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:17.025835" elapsed="0.033839"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:17.060870" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:17.060727" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:17.060700" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:17.061596" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:17.061128" elapsed="0.000546">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:17.060231" elapsed="0.001559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:17.061852" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:17.013791" elapsed="0.048163">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:17.062153" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:17.012895" elapsed="0.049372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:17.012199" elapsed="0.050164">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:18.076290" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:18.071585" elapsed="0.006650">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:18.078565" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:18.078362" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:18.078335" elapsed="0.000313"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:18.078686" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:18.070433" elapsed="0.008376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:18.078998" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:18.079065" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:18.068935" elapsed="0.010250">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:18.079308" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:18.079354" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:18.067539" elapsed="0.011839"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:18.079566" elapsed="0.031126"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:18.111712" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:18.111577" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:18.111552" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:18.112329" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:18.111944" elapsed="0.000458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:18.111153" elapsed="0.001363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:18.112575" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:18.066214" elapsed="0.046458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:18.112849" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:18.064464" elapsed="0.048495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:18.063329" elapsed="0.049847">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:19.124248" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:19.120320" elapsed="0.008484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:19.129544" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:19.129070" elapsed="0.000610"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:19.129016" elapsed="0.000725"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:19.129825" elapsed="0.000038"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:19.119679" elapsed="0.010445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:19.130707" elapsed="0.000066"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:19.130897" elapsed="0.000039"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:19.118843" elapsed="0.012343">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:19.131467" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:19.131576" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:19.117560" elapsed="0.014075"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:19.132043" elapsed="0.032458"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:19.165543" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:19.165405" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:19.165379" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:19.166160" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:19.165777" elapsed="0.000459">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:19.164945" elapsed="0.001414">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:19.166464" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:19.116409" elapsed="0.050158">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:19.166813" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:19.115135" elapsed="0.051793">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:19.114025" elapsed="0.052999">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:20.178682" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:20.175639" elapsed="0.004954">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:20.180904" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:20.180713" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:20.180687" elapsed="0.000304"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:20.181028" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:20.174430" elapsed="0.006735">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:20.181351" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:20.181419" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:20.173022" elapsed="0.008499">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:20.181640" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:20.181685" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:20.171677" elapsed="0.010032"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:20.181876" elapsed="0.034537"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:20.217505" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:20.217368" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:20.217342" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:20.218190" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:20.217742" elapsed="0.000532">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:20.216908" elapsed="0.001486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:20.218531" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:20.170343" elapsed="0.048293">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:20.218816" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:20.168944" elapsed="0.050646">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:20.167907" elapsed="0.051792">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:21.232764" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:21.227840" elapsed="0.006801">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:21.234952" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:21.234762" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:21.234738" elapsed="0.000301"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:21.235076" elapsed="0.000033"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:21.226780" elapsed="0.008434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:21.235398" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:21.235498" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:21.225514" elapsed="0.010091">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:21.235720" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:21.235767" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:21.224300" elapsed="0.011492"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:21.235959" elapsed="0.030874"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:21.267885" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:21.267750" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:21.267724" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:21.268502" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:21.268136" elapsed="0.000439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:21.267297" elapsed="0.001465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:21.268824" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:21.223039" elapsed="0.045885">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:21.269125" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:21.221742" elapsed="0.047496">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:21.220602" elapsed="0.048732">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:22.281943" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:22.277184" elapsed="0.006663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:22.284188" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:22.283965" elapsed="0.000280"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:22.283940" elapsed="0.000330"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:22.284306" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:22.276192" elapsed="0.008232">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:22.284603" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:22.284669" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:22.274927" elapsed="0.009840">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:22.284880" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:22.284925" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:22.273746" elapsed="0.011202"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:22.285134" elapsed="0.028421"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:22.314605" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:22.314472" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:22.314448" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:22.315280" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:22.314835" elapsed="0.000519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:22.314028" elapsed="0.001438">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:22.315526" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:22.272567" elapsed="0.043059">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:22.315805" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:22.271219" elapsed="0.044696">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:22.270215" elapsed="0.045795">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:23.327288" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:23.322754" elapsed="0.006581">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:23.329690" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:23.329491" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:23.329465" elapsed="0.000315"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:23.329817" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:23.321692" elapsed="0.008264">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:23.330175" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:23.330245" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:23.320231" elapsed="0.010114">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:23.330481" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:23.330528" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:23.319271" elapsed="0.011281"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:23.330794" elapsed="0.030006"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:23.361972" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:23.361829" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:23.361804" elapsed="0.000237"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:23.362631" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:23.362268" elapsed="0.000506">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:23.361384" elapsed="0.001504">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:23.362948" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:23.318448" elapsed="0.044600">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:23.363335" elapsed="0.000048"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:23.317566" elapsed="0.045935">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:23.316839" elapsed="0.046826">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:24.376418" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:24.371738" elapsed="0.007669">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:24.379870" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:24.379592" elapsed="0.000362"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:24.379555" elapsed="0.000436"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:24.380042" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:24.370735" elapsed="0.009542">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:24.380620" elapsed="0.000040"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:24.380746" elapsed="0.000028"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:24.369501" elapsed="0.011431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:24.381319" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:24.381404" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:24.368066" elapsed="0.013386"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:24.381775" elapsed="0.031362"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:24.414205" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:24.414016" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:24.413991" elapsed="0.000283"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:24.414804" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:24.414439" elapsed="0.000440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:24.413597" elapsed="0.001395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:24.415054" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:24.366851" elapsed="0.048479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:24.415513" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:24.365584" elapsed="0.050041">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:24.364519" elapsed="0.051204">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:25.424863" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:25.421086" elapsed="0.006649">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:25.428200" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:25.427900" elapsed="0.000382"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:25.427864" elapsed="0.000454"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:25.428375" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:25.420439" elapsed="0.008107">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:25.428932" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:25.429035" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:25.419598" elapsed="0.009609">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:25.429377" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:25.429446" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:25.418749" elapsed="0.010737"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:25.429743" elapsed="0.034949"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:25.465757" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:25.465569" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:25.465544" elapsed="0.000282"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:25.466391" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:25.465991" elapsed="0.000475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:25.465150" elapsed="0.001431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:25.466641" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:25.417950" elapsed="0.048791">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:25.466921" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:25.417060" elapsed="0.049971">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:25.416405" elapsed="0.050749">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:26.478260" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:26.475283" elapsed="0.004843">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:26.480498" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:26.480306" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:26.480281" elapsed="0.000300"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:26.480618" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:26.474435" elapsed="0.006300">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:26.480960" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:26.481044" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:26.472956" elapsed="0.008248">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:26.481338" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:26.481384" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:26.471621" elapsed="0.009787"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:26.481578" elapsed="0.031332"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:26.513957" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:26.513820" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:26.513795" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:26.514624" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:26.514208" elapsed="0.000491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:26.513402" elapsed="0.001412">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:26.514874" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:26.470452" elapsed="0.044519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:26.515164" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:26.469027" elapsed="0.046249">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:26.468018" elapsed="0.047354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:27.526810" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:27.522148" elapsed="0.007238">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:27.529861" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:27.529563" elapsed="0.000382"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:27.529523" elapsed="0.000459"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:27.530035" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:27.521281" elapsed="0.008956">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:27.530517" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:27.530619" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:27.520414" elapsed="0.010384">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:27.530977" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:27.531045" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:27.519249" elapsed="0.011833"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:27.531362" elapsed="0.030428"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:27.562911" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:27.562679" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:27.562654" elapsed="0.000328"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:27.563546" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:27.563163" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:27.562254" elapsed="0.001488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:27.563802" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:27.518148" elapsed="0.045752">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:27.564075" elapsed="0.000037"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:27.517023" elapsed="0.047180">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:27.516198" elapsed="0.048282">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:28.577972" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:28.573056" elapsed="0.006918">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:28.580382" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:28.580155" elapsed="0.000288"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:28.580118" elapsed="0.000355"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:28.580542" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:28.572002" elapsed="0.008674">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:28.580877" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:28.580968" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:28.570577" elapsed="0.010505">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:28.581230" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:28.581277" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:28.569355" elapsed="0.011947"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:28.581473" elapsed="0.036696"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:28.619212" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:28.619059" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:28.619035" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:28.619841" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:28.619470" elapsed="0.000449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:28.618633" elapsed="0.001403">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:28.620111" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:28.568191" elapsed="0.052022">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:28.620389" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:28.566688" elapsed="0.053811">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:28.565504" elapsed="0.055201">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:29.633991" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:29.629467" elapsed="0.006460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:29.636273" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:29.636055" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:29.636026" elapsed="0.000331"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:29.636396" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:29.628369" elapsed="0.008148">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:29.636699" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:29.636765" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:29.626915" elapsed="0.009950">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:29.636986" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:29.637031" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:29.625559" elapsed="0.011497"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:29.637244" elapsed="0.034273"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:29.672555" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:29.672418" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:29.672394" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:29.673218" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:29.672796" elapsed="0.000551">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:29.671980" elapsed="0.001562">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:29.673632" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:29.624280" elapsed="0.049490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:29.674147" elapsed="0.000035"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:29.622752" elapsed="0.051559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:29.621670" elapsed="0.052773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:30.687008" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:30.683005" elapsed="0.006071">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:30.689414" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:30.689218" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:30.689192" elapsed="0.000306"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:30.689535" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:30.681953" elapsed="0.007703">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:30.689838" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:30.689906" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:30.680661" elapsed="0.009345">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:30.690166" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:30.690214" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:30.679308" elapsed="0.010930"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:30.690425" elapsed="0.035819"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:30.727452" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:30.727303" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:30.727276" elapsed="0.000265"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:30.728248" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:30.727758" elapsed="0.000576">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:30.726787" elapsed="0.001696">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:30.728625" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:30.678127" elapsed="0.050603">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:30.728914" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:30.676578" elapsed="0.052448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:30.675416" elapsed="0.053725">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:31.736062" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:31.732980" elapsed="0.005045">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:31.738370" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:31.738170" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:31.738141" elapsed="0.000313"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:31.738491" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:31.732518" elapsed="0.006095">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:31.738797" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:31.738866" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:31.731947" elapsed="0.007020">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:31.739105" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:31.739154" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:31.731386" elapsed="0.007792"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:31.739346" elapsed="0.036045"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:31.776455" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:31.776318" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:31.776291" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:31.777085" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:31.776687" elapsed="0.000490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:31.775866" elapsed="0.001494">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:31.777423" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:31.730849" elapsed="0.046675">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:31.777703" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:31.730269" elapsed="0.047547">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:31.729734" elapsed="0.048178">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:32.788611" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:32.784766" elapsed="0.006377">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:32.791498" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:32.791278" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:32.791249" elapsed="0.000335"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:32.791622" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:32.784079" elapsed="0.007667">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:32.791933" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:32.792013" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:32.783316" elapsed="0.008815">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:32.792258" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:32.792306" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:32.782485" elapsed="0.009846"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:32.792514" elapsed="0.042933"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:32.836648" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:32.836507" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:32.836480" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:32.837302" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:32.836897" elapsed="0.000484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:32.836029" elapsed="0.001469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:32.837678" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:32.781288" elapsed="0.056529">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:32.838016" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:32.779895" elapsed="0.058252">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:32.778823" elapsed="0.059435">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:33.847488" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:33.843888" elapsed="0.006559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:33.850788" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:33.850577" elapsed="0.000290"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:33.850550" elapsed="0.000356"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:33.850955" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:33.843165" elapsed="0.007957">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:33.851316" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:33.851399" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:33.842383" elapsed="0.009149">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:33.851728" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:33.851775" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:33.841527" elapsed="0.010273"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:33.851973" elapsed="0.038453"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:33.891971" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:33.891787" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:33.891752" elapsed="0.000319"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:33.892895" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:33.892328" elapsed="0.000679">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:33.891138" elapsed="0.002066">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:33.893302" elapsed="0.000028"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:33.840758" elapsed="0.052742">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:33.893793" elapsed="0.000037"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:33.839772" elapsed="0.054196">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:33.838978" elapsed="0.055214">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:34.906655" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:34.903420" elapsed="0.005225">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:34.908968" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:34.908775" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:34.908748" elapsed="0.000303"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:34.909106" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:34.902211" elapsed="0.007021">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:34.909423" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:34.909556" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:34.900711" elapsed="0.008956">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:34.909789" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:34.909836" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:34.899349" elapsed="0.010513"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:34.910033" elapsed="0.032088"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:34.943223" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:34.943065" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:34.943040" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:34.943849" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:34.943462" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:34.942593" elapsed="0.001454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:34.944127" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:34.897973" elapsed="0.046257">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:34.944410" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:34.896277" elapsed="0.048250">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:34.895219" elapsed="0.049418">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:35.957011" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:35.952581" elapsed="0.006379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:35.959355" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:35.959080" elapsed="0.000336"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:35.959055" elapsed="0.000450"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:35.959547" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:35.951562" elapsed="0.008109">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:35.959858" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:35.959928" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:35.950283" elapsed="0.009746">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:35.960168" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:35.960216" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:35.949053" elapsed="0.011187"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:35.960410" elapsed="0.031586"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:35.993019" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:35.992882" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:35.992856" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:35.993669" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:35.993288" elapsed="0.000457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:35.992464" elapsed="0.001398">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:35.993926" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:35.947909" elapsed="0.046122">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:35.994244" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:35.946550" elapsed="0.047811">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:35.945538" elapsed="0.048923">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:37.007474" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:37.004356" elapsed="0.005337">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:37.010147" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:37.009912" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:37.009881" elapsed="0.000354"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:37.010273" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:37.003267" elapsed="0.007129">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:37.010634" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:37.010711" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:37.001664" elapsed="0.009154">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:37.010941" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:37.010989" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:37.000081" elapsed="0.010933"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:37.011274" elapsed="0.035802"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:37.048349" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:37.048184" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:37.048153" elapsed="0.000275"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:37.049035" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:37.048645" elapsed="0.000487">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:37.047641" elapsed="0.001611">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:37.049315" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:36.998573" elapsed="0.050860">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:37.049656" elapsed="0.000026"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:36.996987" elapsed="0.052790">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:36.995618" elapsed="0.054258">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:38.061024" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:38.057601" elapsed="0.006033">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:38.064151" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:38.063797" elapsed="0.000457"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:38.063763" elapsed="0.000575"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:38.064406" elapsed="0.000030"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:38.056955" elapsed="0.007663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:38.064938" elapsed="0.000042"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:38.065068" elapsed="0.000055"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:38.055819" elapsed="0.009452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:38.065468" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:38.065548" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:38.054610" elapsed="0.010976"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:38.065872" elapsed="0.032171"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:38.099049" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:38.098916" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:38.098892" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:38.099684" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:38.099317" elapsed="0.000443">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:38.098503" elapsed="0.001371">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:38.099933" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:38.053452" elapsed="0.046579">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:38.100224" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:38.051814" elapsed="0.048567">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:38.050808" elapsed="0.049740">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:39.111423" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:39.107732" elapsed="0.006400">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:39.114516" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:39.114279" elapsed="0.000315"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:39.114242" elapsed="0.000387"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:39.114670" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:39.107075" elapsed="0.007760">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:39.115030" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:39.115120" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:39.106290" elapsed="0.008936">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:39.115355" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:39.115402" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:39.105431" elapsed="0.009996"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:39.115629" elapsed="0.035117"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:39.151774" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:39.151639" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:39.151615" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:39.152389" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:39.152007" elapsed="0.000455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:39.151210" elapsed="0.001365">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:39.152642" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:39.104035" elapsed="0.048707">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:39.153015" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:39.102628" elapsed="0.050518">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:39.101547" elapsed="0.051698">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:40.163503" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:40.159914" elapsed="0.006245">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:40.166513" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:40.166294" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:40.166267" elapsed="0.000331"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:40.166635" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:40.159288" elapsed="0.007470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:40.166962" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:40.167034" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:40.158485" elapsed="0.008669">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:40.167283" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:40.167343" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:40.157696" elapsed="0.009678"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:40.167546" elapsed="0.037149"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:40.205799" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:40.205654" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:40.205621" elapsed="0.000252"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:40.206451" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:40.206043" elapsed="0.000487">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:40.205167" elapsed="0.001483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:40.206795" elapsed="0.000021"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:40.156477" elapsed="0.050430">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:40.207106" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:40.155155" elapsed="0.052068">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:40.154190" elapsed="0.053130">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:41.219514" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:41.215592" elapsed="0.007184">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:41.223179" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:41.222937" elapsed="0.000304"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:41.222905" elapsed="0.000362"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:41.223305" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:41.214911" elapsed="0.008523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:41.223641" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:41.223714" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:41.213480" elapsed="0.010335">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:41.223944" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:41.223990" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:41.211916" elapsed="0.012099"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:41.224199" elapsed="0.042796"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:41.268084" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:41.267946" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:41.267921" elapsed="0.000253"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:41.268741" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:41.268341" elapsed="0.000477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:41.267514" elapsed="0.001500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:41.269078" elapsed="0.000034"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:41.210467" elapsed="0.058731">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:41.269380" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:41.209136" elapsed="0.060363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:41.208195" elapsed="0.061403">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:42.282289" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:42.278326" elapsed="0.005973">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:42.284667" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:42.284441" elapsed="0.000284"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:42.284410" elapsed="0.000342"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:42.284790" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:42.277257" elapsed="0.007658">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:42.285127" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:42.285196" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:42.275898" elapsed="0.009397">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:42.285424" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:42.285470" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:42.274586" elapsed="0.010908"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:42.285660" elapsed="0.035714"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:42.322436" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:42.322300" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:42.322275" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:42.323306" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:42.322727" elapsed="0.000666">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:42.321851" elapsed="0.001660">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:42.323572" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:42.273307" elapsed="0.050364">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:42.323850" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:42.271898" elapsed="0.052064">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:42.270801" elapsed="0.053255">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:43.334448" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:43.330641" elapsed="0.007553">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:43.338851" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:43.338447" elapsed="0.000530"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:43.338395" elapsed="0.000639"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:43.339214" elapsed="0.000038"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:43.329901" elapsed="0.009578">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:43.339818" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:43.339896" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:43.329108" elapsed="0.010891">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:43.340167" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:43.340217" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:43.328330" elapsed="0.011912"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:43.340475" elapsed="0.036997"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:43.378538" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:43.378400" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:43.378375" elapsed="0.000236"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:43.379184" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:43.378781" elapsed="0.000478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:43.377948" elapsed="0.001427">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:43.379436" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:43.327523" elapsed="0.052014">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:43.379714" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:43.326074" elapsed="0.053750">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:43.325145" elapsed="0.054773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:44.391524" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:44.388413" elapsed="0.005032">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:44.393762" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:44.393571" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:44.393545" elapsed="0.000298"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:44.393881" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:44.387306" elapsed="0.006691">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:44.394196" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:44.394265" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:44.385898" elapsed="0.008466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:44.394551" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:44.394597" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:44.384563" elapsed="0.010059"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:44.394792" elapsed="0.035142"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:44.431009" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:44.430874" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:44.430849" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:44.431693" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:44.431266" elapsed="0.000508">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:44.430426" elapsed="0.001468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:44.431955" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:44.383335" elapsed="0.048717">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:44.432248" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:44.382011" elapsed="0.050349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:44.381010" elapsed="0.051445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:45.443929" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:45.440715" elapsed="0.005156">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:45.446232" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:45.446001" elapsed="0.000288"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:45.445972" elapsed="0.000345"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:45.446356" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:45.439429" elapsed="0.007050">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:45.446752" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:45.446829" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:45.438164" elapsed="0.008769">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:45.447059" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:45.447124" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:45.436889" elapsed="0.010263"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:45.447321" elapsed="0.037422"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:45.486005" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:45.485839" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:45.485807" elapsed="0.000276"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:45.486657" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:45.486269" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:45.485313" elapsed="0.001540">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:45.486916" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:45.435669" elapsed="0.051350">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:45.487219" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:45.434354" elapsed="0.052980">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:45.433325" elapsed="0.054107">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:46.500283" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:46.495502" elapsed="0.007725">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:46.503830" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:46.503509" elapsed="0.000410"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:46.503466" elapsed="0.000492"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:46.504013" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:46.494392" elapsed="0.009865">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:46.504553" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:46.504657" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:46.493165" elapsed="0.011697">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:46.505065" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:46.505163" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:46.491903" elapsed="0.013297"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:46.505488" elapsed="0.033970"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:46.540464" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:46.540333" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:46.540310" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:46.541120" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:46.540698" elapsed="0.000499">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:46.539901" elapsed="0.001412">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:46.541373" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:46.490654" elapsed="0.050817">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:46.541645" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:46.489300" elapsed="0.052453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:46.488288" elapsed="0.053564">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:47.554423" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:47.549803" elapsed="0.006597">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:47.556736" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:47.556529" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:47.556501" elapsed="0.000319"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:47.556858" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:47.548727" elapsed="0.008254">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:47.557184" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:47.557271" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:47.547514" elapsed="0.009861">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:47.557497" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:47.557542" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:47.546321" elapsed="0.011246"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:47.557734" elapsed="0.040887"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:47.599673" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:47.599538" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:47.599514" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:47.600293" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:47.599910" elapsed="0.000458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:47.599113" elapsed="0.001371">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:47.600545" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:47.544955" elapsed="0.055688">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:47.600820" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:47.543671" elapsed="0.057257">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:47.542701" elapsed="0.058322">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:48.611961" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:48.608272" elapsed="0.006722">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:48.615331" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:48.615139" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:48.615112" elapsed="0.000303"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:48.615456" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:48.607608" elapsed="0.007997">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:48.615801" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:48.615895" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:48.606706" elapsed="0.009303">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:48.616295" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:48.616343" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:48.605449" elapsed="0.010923"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:48.616563" elapsed="0.032789"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:48.650834" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:48.650648" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:48.650613" elapsed="0.000308"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:48.651479" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:48.651102" elapsed="0.000453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:48.649876" elapsed="0.001794">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:48.651731" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:48.604315" elapsed="0.047515">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:48.652006" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:48.602981" elapsed="0.049153">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:48.601988" elapsed="0.050339">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:49.663146" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:49.659124" elapsed="0.007039">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:49.666647" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:49.666336" elapsed="0.000398"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:49.666299" elapsed="0.000472"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:49.666824" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:49.658441" elapsed="0.008558">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:49.667293" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:49.667397" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:49.657576" elapsed="0.009974">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:49.667722" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:49.667791" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:49.656611" elapsed="0.011219"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:49.668153" elapsed="0.032739"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:49.701913" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:49.701778" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:49.701754" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:49.702604" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:49.702165" elapsed="0.000521">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:49.701361" elapsed="0.001443">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:49.702865" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:49.655697" elapsed="0.047267">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:49.703259" elapsed="0.000026"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:49.654468" elapsed="0.048915">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:49.653195" elapsed="0.050286">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:50.716052" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:50.711336" elapsed="0.006576">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:50.718231" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:50.718030" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:50.718005" elapsed="0.000308"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:50.718348" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:50.710312" elapsed="0.008151">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:50.718646" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:50.718714" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:50.709066" elapsed="0.009747">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:50.718962" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:50.719012" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:50.707877" elapsed="0.011160"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:50.719224" elapsed="0.031910"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:50.752140" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:50.751984" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:50.751960" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:50.752732" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:50.752372" elapsed="0.000433">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:50.751574" elapsed="0.001343">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:50.753048" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:50.706672" elapsed="0.046498">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:50.753350" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:50.705371" elapsed="0.048089">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:50.704377" elapsed="0.049179">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:51.766212" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:51.762317" elapsed="0.005917">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:51.768577" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:51.768364" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:51.768335" elapsed="0.000328"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:51.768701" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:51.761250" elapsed="0.007575">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:51.769038" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:51.769138" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:51.759725" elapsed="0.009520">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:51.769367" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:51.769414" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:51.758432" elapsed="0.011006"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:51.769628" elapsed="0.041038"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:51.812121" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:51.811913" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:51.811876" elapsed="0.000349"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:51.812964" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:51.812460" elapsed="0.000613">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:51.811292" elapsed="0.002024">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:51.813381" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:51.757016" elapsed="0.056468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:51.813684" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:51.755596" elapsed="0.058205">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:51.754517" elapsed="0.059382">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:52.822037" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:52.818564" elapsed="0.005979">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:52.824919" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:52.824684" elapsed="0.000303"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:52.824654" elapsed="0.000364"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:52.825063" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:52.818002" elapsed="0.007224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:52.825462" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:52.825546" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:52.817331" elapsed="0.008340">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:52.825810" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:52.825865" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:52.816627" elapsed="0.009268"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:52.826126" elapsed="0.036363"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:52.863573" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:52.863442" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:52.863417" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:52.864202" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:52.863805" elapsed="0.000472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:52.863006" elapsed="0.001384">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:52.864452" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:52.815856" elapsed="0.048698">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:52.864733" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:52.815145" elapsed="0.049697">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:52.814535" elapsed="0.050400">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:53.878394" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:53.874658" elapsed="0.006040">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:53.881151" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:53.880853" elapsed="0.000372"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:53.880820" elapsed="0.000439"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:53.881305" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:53.874203" elapsed="0.007255">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:53.881714" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:53.881807" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:53.872651" elapsed="0.009291">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:53.882206" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:53.882276" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:53.870789" elapsed="0.011525"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:53.882564" elapsed="0.039552"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:53.923500" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:53.923316" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:53.923283" elapsed="0.000317"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:53.924364" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:53.923836" elapsed="0.000631">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:53.922709" elapsed="0.001957">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:53.924763" elapsed="0.000026"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:53.869220" elapsed="0.055690">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:53.925194" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:53.867281" elapsed="0.058075">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:53.865913" elapsed="0.059586">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:54.937998" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:54.933016" elapsed="0.009128">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:54.942696" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:54.942347" elapsed="0.000442"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:54.942300" elapsed="0.000532"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:54.942887" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:54.932005" elapsed="0.011040">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:54.943269" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:54.943407" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:54.930876" elapsed="0.012645">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:54.943670" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:54.943720" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:54.929647" elapsed="0.014098"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:54.943920" elapsed="0.040132"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:54.985331" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:54.985081" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:54.985054" elapsed="0.000356"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:54.986025" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:54.985595" elapsed="0.000534">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:54.984599" elapsed="0.001653">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:54.986316" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:54.928688" elapsed="0.057738">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:54.986621" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:54.927438" elapsed="0.059307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:54.926468" elapsed="0.060382">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:56.000032" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:55.995279" elapsed="0.006721">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:56.002345" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:56.002143" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:56.002113" elapsed="0.000385"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:56.002541" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:55.994165" elapsed="0.008499">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:56.002847" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:56.002915" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:55.992769" elapsed="0.010247">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:56.003150" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:56.003197" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:55.991478" elapsed="0.011742"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:56.003398" elapsed="0.033484"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:56.037918" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:56.037781" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:56.037756" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:56.038538" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:56.038169" elapsed="0.000444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:56.037343" elapsed="0.001385">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:56.038790" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:55.990216" elapsed="0.048670">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:56.039065" elapsed="0.000036"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:55.988791" elapsed="0.050407">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:55.987809" elapsed="0.051484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:57.053118" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:57.048348" elapsed="0.006706">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:57.055498" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:57.055281" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:57.055252" elapsed="0.000336"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:57.055640" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:57.047177" elapsed="0.008598">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:57.055970" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:57.056041" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:57.045639" elapsed="0.010530">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:57.056301" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:57.056348" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:57.044255" elapsed="0.012118"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:57.056544" elapsed="0.036177"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:57.093735" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:57.093601" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:57.093576" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:57.094523" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:57.093969" elapsed="0.000632">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:57.093185" elapsed="0.001532">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:57.094777" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:57.042879" elapsed="0.051996">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:57.095053" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:57.041368" elapsed="0.053824">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:57.040266" elapsed="0.055019">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:58.108642" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:58.103993" elapsed="0.006577">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:58.111002" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:58.110719" elapsed="0.000344"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:58.110689" elapsed="0.000401"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:58.111154" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:58.102988" elapsed="0.008308">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:58.111495" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:58.111563" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:58.101711" elapsed="0.009964">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:58.111815" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:58.111862" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:58.100402" elapsed="0.011484"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:58.112056" elapsed="0.033869"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:58.147148" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:58.146995" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:58.146969" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:58.147759" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:58.147385" elapsed="0.000448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:58.146387" elapsed="0.001561">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:58.148012" elapsed="0.000021"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:58.099084" elapsed="0.049058">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:58.148323" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:58.097402" elapsed="0.051033">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:58.096250" elapsed="0.052389">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:14:59.161427" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:14:59.156696" elapsed="0.006598">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:59.163656" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:14:59.163430" elapsed="0.000289"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:14:59.163405" elapsed="0.000340"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:14:59.163782" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:14:59.155700" elapsed="0.008199">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:59.164082" elapsed="0.000046"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:14:59.164187" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:14:59.154328" elapsed="0.009964">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:14:59.164410" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:14:59.164456" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:14:59.153064" elapsed="0.011416"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:14:59.164647" elapsed="0.030815"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:14:59.196494" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:14:59.196359" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:14:59.196334" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:14:59.197117" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:14:59.196727" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:14:59.195919" elapsed="0.001388">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:14:59.197368" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:14:59.151846" elapsed="0.045621">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:14:59.197763" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:14:59.150446" elapsed="0.047429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:14:59.149493" elapsed="0.048478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:00.210241" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:00.205724" elapsed="0.007062">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:00.213217" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:00.212944" elapsed="0.000354"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:00.212911" elapsed="0.000423"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:00.213384" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:00.204737" elapsed="0.008810">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:00.213796" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:00.213889" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:00.203510" elapsed="0.010515">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:00.214207" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:00.214269" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:00.202319" elapsed="0.011984"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:00.214707" elapsed="0.033715"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:00.249427" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:00.249294" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:00.249270" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:00.250028" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:00.249658" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:00.248869" elapsed="0.001365">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:00.250362" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:00.201121" elapsed="0.049343">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:00.250643" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:00.199804" elapsed="0.050950">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:15:00.198809" elapsed="0.052041">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:01.259808" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:01.256107" elapsed="0.005750">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:01.262181" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:01.261977" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:01.261952" elapsed="0.000312"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:01.262300" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:01.255441" elapsed="0.006976">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:01.262596" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:01.262663" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:01.254619" elapsed="0.008142">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:01.262878" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:01.262922" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:01.253816" elapsed="0.009130"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:01.263127" elapsed="0.031094"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:01.295226" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:01.295074" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:01.295050" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:01.295817" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:01.295458" elapsed="0.000431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:01.294666" elapsed="0.001403">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:01.296148" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:01.253060" elapsed="0.043188">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:01.296432" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:01.252206" elapsed="0.044379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:15:01.251532" elapsed="0.045150">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:02.307931" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:02.304566" elapsed="0.005278">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:02.310169" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:02.309964" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:02.309940" elapsed="0.000311"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:02.310287" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:02.303563" elapsed="0.006841">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:02.310585" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:02.310653" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:02.302331" elapsed="0.008422">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:02.310869" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:02.310915" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:02.301062" elapsed="0.009878"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:02.311128" elapsed="0.030035"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:02.342303" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:02.342146" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:02.342082" elapsed="0.000293"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:02.342988" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:02.342542" elapsed="0.000521">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:02.341660" elapsed="0.001541">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:02.343266" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:02.299897" elapsed="0.043477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:02.343561" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:02.298607" elapsed="0.045070">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:15:02.297624" elapsed="0.046153">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:03.355707" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:03.351774" elapsed="0.006664">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:03.358798" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:03.358572" elapsed="0.000307"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:03.358542" elapsed="0.000366"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:03.358949" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:03.350924" elapsed="0.008218">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:03.359407" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:03.359498" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:03.349763" elapsed="0.009870">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:03.359808" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:03.359868" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:03.348462" elapsed="0.011440"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:03.360233" elapsed="0.042182"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:03.403495" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:03.403357" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:03.403331" elapsed="0.000238"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:03.404138" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:03.403740" elapsed="0.000478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:03.402899" elapsed="0.001437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:03.404398" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:03.347266" elapsed="0.057234">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:03.404682" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:03.345861" elapsed="0.058935">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:15:03.344677" elapsed="0.060215">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:04.417541" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.413158" elapsed="0.007135">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.420725" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.420459" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:04.420425" elapsed="0.000419"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.420898" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.411898" elapsed="0.009170">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.421362" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.421471" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.410639" elapsed="0.010983">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:04.421860" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.421927" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.409373" elapsed="0.012591"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.422248" elapsed="0.032286"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:04.455544" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.455409" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.455385" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.456153" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.455774" elapsed="0.000452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:04.454972" elapsed="0.001368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.456401" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.408208" elapsed="0.048292">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.456678" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.406866" elapsed="0.049922">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.405800" elapsed="0.051084">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:04.456970" level="FAIL">Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>120s</arg>
<arg>1s</arg>
<arg>PrefixCounting.Check_Ipv4_Topology_Is_Empty</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:13:03.463202" elapsed="120.993865">Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.458477" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:04.458151" elapsed="0.000369"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:04.457728" elapsed="0.000843"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.459416" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.459012" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.458993" elapsed="0.000580"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.459730" elapsed="0.000321"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.465629" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.465068" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:04.465953" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.465761" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.465736" elapsed="0.000304"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.466601" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.466285" elapsed="0.000343"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:04.467062" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_For_Empty_Ipv4_Topology_Before_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.466793" elapsed="0.000311"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:04.467456" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:04.467272" elapsed="0.000211"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.468112" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:04.467737" elapsed="0.000405"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.468618" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:04.468306" elapsed="0.000340"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.469259" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"

Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:04.468806" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.469775" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.469478" elapsed="0.000346"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:04.464648" elapsed="0.005230"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.458795" elapsed="0.011132"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:04.457407" elapsed="0.012560"/>
</kw>
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:13:03.397654" elapsed="121.072354">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"

Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s3-t2" name="Reconfigure_ODL_To_Accept_Connection" line="94">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.474949" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.474664" elapsed="0.000351">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:04.474428" elapsed="0.000723">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:04.474409" elapsed="0.000777">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.474233" elapsed="0.001043">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.475455" elapsed="0.000024"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.471713" elapsed="0.003867">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.476903" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:04.476588" elapsed="0.000357"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:04.476204" elapsed="0.000791"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.477853" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.477455" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.477436" elapsed="0.000502"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.478104" elapsed="0.000406"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.484568" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.484009" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:04.484851" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-17T03:15:04.484688" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.484665" elapsed="0.000284"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.485149" elapsed="0.000027"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.485363" elapsed="0.000024"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.485583" elapsed="0.000024"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.485808" elapsed="0.000029"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.486043" elapsed="0.000029"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.486319" elapsed="0.000027"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.486517" elapsed="0.000026"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:04.483590" elapsed="0.003015"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.477241" elapsed="0.009414"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:04.475876" elapsed="0.010820"/>
</kw>
<doc>Configure BGP peer module with initiate-connection set to false.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.470886" elapsed="0.015850">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s3-t3" name="Reconfigure_Data_Change_Counter" line="109">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.491416" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.491131" elapsed="0.000352">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:04.490890" elapsed="0.000668">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:04.490872" elapsed="0.000721">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.490702" elapsed="0.001022">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.491897" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.488399" elapsed="0.003606">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.493346" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:04.493012" elapsed="0.000376"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:04.492638" elapsed="0.000800"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.494386" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.493901" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.493882" elapsed="0.000599"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.494641" elapsed="0.000312"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.500115" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.499694" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:04.500359" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:15:04.500217" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.500199" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.500597" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.500772" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.500946" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.501132" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.501302" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.501475" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.501642" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:04.499379" elapsed="0.002339"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.493687" elapsed="0.008082"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:04.492309" elapsed="0.009501"/>
</kw>
<doc>Configure data change counter to count transactions in example-ipv4-topology instead of example-linkstate-topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.487343" elapsed="0.014505">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s3-t4" name="Verify_Data_Change_Counter_Ready" line="113">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.505978" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.505708" elapsed="0.000329">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:04.505488" elapsed="0.000626">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:04.505470" elapsed="0.000705">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.505304" elapsed="0.000960">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.506470" elapsed="0.000021"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.502838" elapsed="0.003740">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.507842" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:04.507537" elapsed="0.000346"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:04.507172" elapsed="0.000761"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.508765" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.508382" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.508364" elapsed="0.000486"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.509000" elapsed="0.000322"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.514534" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.514059" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:04.514776" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-17T03:15:04.514635" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.514617" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.515003" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.515192" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.515367" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.515533" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.515699" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.515863" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.516026" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:04.513749" elapsed="0.002364"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.508170" elapsed="0.007994"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:04.506853" elapsed="0.009352"/>
</kw>
<doc>Data change counter might have been slower to start than ipv4 topology, wait for it.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.502292" elapsed="0.013950">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s3-t5" name="Start_Talking_BGP_Speaker" line="117">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.520375" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.520103" elapsed="0.000341">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:04.519871" elapsed="0.000637">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:04.519852" elapsed="0.000686">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.519681" elapsed="0.000943">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.520793" elapsed="0.000021"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.517067" elapsed="0.003831">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.522245" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:04.521886" elapsed="0.000403"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:04.521531" elapsed="0.000808"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.523164" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.522768" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.522750" elapsed="0.000500"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.523400" elapsed="0.000303"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.529485" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.529066" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:04.529728" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-17T03:15:04.529589" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.529570" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.529959" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.530151" elapsed="0.000053"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.530362" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.530532" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.530700" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.530868" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.531039" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:04.528753" elapsed="0.002376"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.522557" elapsed="0.008623"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:04.521225" elapsed="0.009996"/>
</kw>
<doc>Start Python speaker to connect to ODL.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.516639" elapsed="0.014618">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s3-t6" name="Wait_For_Stable_Talking_Ipv4_Topology" line="124">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.535353" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.535057" elapsed="0.000363">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:04.534841" elapsed="0.000647">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:04.534823" elapsed="0.000696">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.534656" elapsed="0.000948">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.535774" elapsed="0.000021"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.532181" elapsed="0.003698">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.537197" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:04.536876" elapsed="0.000364"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:04.536519" elapsed="0.000772"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.538110" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.537722" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.537704" elapsed="0.000509"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.538364" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.543871" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.543470" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:04.544128" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:15:04.543972" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.543953" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.544360" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.544570" elapsed="0.000023"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.544748" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.544915" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.545081" elapsed="0.000035"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.545265" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.545430" elapsed="0.000022"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:04.543160" elapsed="0.002348"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.537511" elapsed="0.008046"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:04.536172" elapsed="0.009425"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable. This is done by checking the change counter.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.531601" elapsed="0.014033">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s3-t7" name="Check_Talking_Ipv4_Topology_Count" line="132">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:04.549513" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:04.549245" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.550809" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.550696" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.550678" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.555774" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.555670" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.555653" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.556855" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:04.556478" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.557358" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:04.557045" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:04.557427" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:04.557627" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:04.556071" elapsed="0.001581"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.563459" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.563351" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.563332" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.564705" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.564599" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.564580" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:04.565312" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.564922" elapsed="0.000418"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.565727" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.565506" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.566600" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.566335" elapsed="0.000959">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:04.567478" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:04.567528" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.565921" elapsed="0.001631"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.568323" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.568066" elapsed="0.000893">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:04.569155" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:04.569201" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.567723" elapsed="0.001501"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.570146" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.569522" elapsed="0.000702">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:04.569299" elapsed="0.000992">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:04.569280" elapsed="0.001043">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.570494" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.570728" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.570583" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:04.570566" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.570835" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.573431" elapsed="0.000150"/>
</kw>
<msg time="2026-04-17T03:15:04.573641" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.572427" elapsed="0.001341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.574044" elapsed="0.000113"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.574450" elapsed="0.000082"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.571798" elapsed="0.002842"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:04.571118" elapsed="0.003585"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.564298" elapsed="0.010488">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</status>
</kw>
<msg time="2026-04-17T03:15:04.574920" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.574964" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.563686" elapsed="0.011301"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.575287" elapsed="0.000169"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.575063" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.575045" elapsed="0.000472"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.576326" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.576222" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.576204" elapsed="0.000188"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.576666" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:04.576848" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.576546" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.577327" level="INFO">{1: 16}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.577048" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.577767" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.577528" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.578417" elapsed="0.000261"/>
</kw>
<msg time="2026-04-17T03:15:04.578775" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:04.578821" level="INFO">${old_connection_index} = 16</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.577971" elapsed="0.000873"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.579675" elapsed="0.000190"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.580926" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.580529" elapsed="0.001240">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.580035" elapsed="0.001831"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.582819" elapsed="0.000289"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.582047" elapsed="0.001146"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:04.579158" elapsed="0.004081"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.578918" elapsed="0.004370"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.578899" elapsed="0.004413"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:04.584195" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.583873" elapsed="0.000349"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:04.584270" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:04.584423" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.583540" elapsed="0.000910"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.584628" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.585362" level="INFO">index=17
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:04.585464" level="INFO">${karaf_connection_object} = index=17
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.585252" elapsed="0.000239"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.585643" elapsed="0.002695"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.588945" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:04.590180" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.588573" elapsed="0.002022">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.605575" elapsed="0.000395"/>
</kw>
<msg time="2026-04-17T03:15:04.606149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.603953" elapsed="0.002395"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.606529" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.606696" elapsed="0.000025"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.591418" elapsed="0.015366"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:04.590878" elapsed="0.015952"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.575917" elapsed="0.030998">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.607288" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.607365" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.562980" elapsed="0.044493">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:04.607582" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.607625" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.558031" elapsed="0.049618"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.607990" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.607729" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.607709" elapsed="0.000358"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:04.557882" elapsed="0.050225"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:04.557708" elapsed="0.050436"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:04.555312" elapsed="0.052891"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:04.550407" elapsed="0.057851"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.549935" elapsed="0.058368"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:04.546759" elapsed="0.061599"/>
</kw>
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:04.614020" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.611282" elapsed="0.004466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.616032" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.615852" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:04.615831" elapsed="0.000296"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.616163" elapsed="0.000015"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.610827" elapsed="0.005491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.616504" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.616572" elapsed="0.000014"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.610294" elapsed="0.006374">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:04.616776" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.616823" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.609740" elapsed="0.007108"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.617014" elapsed="0.032856"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:04.650888" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.650759" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.650735" elapsed="0.000220"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.651486" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.651131" elapsed="0.000429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:04.650352" elapsed="0.001317">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.651728" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.609031" elapsed="0.042793">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.651997" elapsed="0.000021"/>
</kw>
<arg>${COUNT_CHANGE_COUNT_SINGLE}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.608584" elapsed="0.043537">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.653460" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:04.653136" elapsed="0.000368"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:04.652746" elapsed="0.000808"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.654404" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.653990" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.653971" elapsed="0.000519"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.654643" elapsed="0.000311"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.660172" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.659744" elapsed="0.000455"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:04.660416" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.660273" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.660255" elapsed="0.000223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.660924" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.660629" elapsed="0.000323"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:04.661393" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_Talking_Ipv4_Topology_Count</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.661127" elapsed="0.000293"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:04.661756" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:04.661581" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.662313" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:04.661938" elapsed="0.000403"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.662807" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:04.662499" elapsed="0.000335"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.663442" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:04.662991" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.663943" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.663650" elapsed="0.000341"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:04.659427" elapsed="0.004618"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.653777" elapsed="0.010331"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:04.652431" elapsed="0.011720"/>
</kw>
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:04.546078" elapsed="0.118111">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s3-t8" name="Kill_Talking_BGP_Speaker" line="138">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:04.668245" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:04.667962" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.669493" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.669382" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.669363" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.674517" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.674408" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.674390" elapsed="0.000234"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.675635" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:04.675256" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.676141" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:04.675825" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:04.676212" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:15:04.676367" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:04.674858" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.681959" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.681854" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.681835" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.683229" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.683123" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.683081" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:04.683737" level="INFO">${karaf_connection_index} = 17</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.683442" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.684156" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.683923" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.684931" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.684680" elapsed="0.000901">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:04.685934" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:04.685980" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.684344" elapsed="0.001659"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.686925" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.686548" elapsed="0.001028">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:04.687758" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:04.687804" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.686191" elapsed="0.001636"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.688747" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.688147" elapsed="0.000661">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:04.687903" elapsed="0.000970">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:04.687883" elapsed="0.001021">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.689069" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.689318" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.689172" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:04.689155" elapsed="0.000237"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.689425" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.692042" elapsed="0.000161"/>
</kw>
<msg time="2026-04-17T03:15:04.692266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.690912" elapsed="0.001480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.692684" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.693057" elapsed="0.000090"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.690299" elapsed="0.003049"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:04.689693" elapsed="0.003727"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.682802" elapsed="0.010705">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:15:04.693608" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.693652" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.682200" elapsed="0.011475"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.693857" elapsed="0.000170"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.693750" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.693731" elapsed="0.000349"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.694956" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.694852" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.694834" elapsed="0.000187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.695311" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:04.695412" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.695191" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.695858" level="INFO">{1: 17}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.695601" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.696316" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.696057" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.696888" elapsed="0.000274"/>
</kw>
<msg time="2026-04-17T03:15:04.697260" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:04.697306" level="INFO">${old_connection_index} = 17</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.696528" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.698181" elapsed="0.000220"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.699487" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.699077" elapsed="0.001264">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.698599" elapsed="0.001838"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.701073" elapsed="0.000291"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.700613" elapsed="0.000832"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:04.697633" elapsed="0.003857"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.697404" elapsed="0.004134"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.697385" elapsed="0.004177"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:04.702541" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.702201" elapsed="0.000366"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:04.702616" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:04.702767" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.701772" elapsed="0.001019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.702950" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.703659" level="INFO">index=18
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:04.703794" level="INFO">${karaf_connection_object} = index=18
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.703554" elapsed="0.000268"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.703975" elapsed="0.002535"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.706938" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:04.707950" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.706680" elapsed="0.001657">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.721934" elapsed="0.000738"/>
</kw>
<msg time="2026-04-17T03:15:04.722761" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.720505" elapsed="0.002404"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.723080" elapsed="0.000038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.723267" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.709154" elapsed="0.014194"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:04.708613" elapsed="0.014782"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.694562" elapsed="0.028913">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.723819" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.723891" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.681519" elapsed="0.042475">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:04.724112" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.724157" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.676767" elapsed="0.047413"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.724510" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.724257" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.724238" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:04.676618" elapsed="0.047990"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:04.676445" elapsed="0.048194"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:04.674021" elapsed="0.050674"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:04.669080" elapsed="0.055668"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.668664" elapsed="0.056127"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:04.665478" elapsed="0.059365"/>
</kw>
<kw name="Store_Change_Count">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Change_Count" owner="ChangeCounter">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:04.728569" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${CC_DATA_CHANGE_COUNTER_URL}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.726018" elapsed="0.004419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.730633" elapsed="0.000063"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${count}</var>
<arg>json.loads('${response.text}')["data-change-counter:data-change-counter"]["counter"][0]["count"]</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.730874" elapsed="0.000022"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.730944" elapsed="0.000017"/>
</return>
<doc>GET data change request, assert status 200, return the value.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.725724" elapsed="0.005330">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:04.731186" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.731233" level="INFO">${count} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${count}</var>
<arg>ChangeCounter.Get_Change_Count</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.725319" elapsed="0.005944"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${last_change_count_single}</arg>
<arg>${count}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.731583" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.731343" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.731323" elapsed="0.000341"/>
</if>
<doc>Get the count of changes from BGP change counter. Ignore error or store the value.</doc>
<status status="PASS" start="2026-04-17T03:15:04.725023" elapsed="0.006688"/>
</kw>
<kw name="Kill_BGP_Speaker" owner="BGPSpeaker">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.733149" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.732590" elapsed="0.000588"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-17T03:15:04.733335" elapsed="0.000340"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-17T03:15:04.732323" elapsed="0.001441"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.736623" level="INFO">^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:15:04.734387" elapsed="0.002293"/>
</kw>
<msg time="2026-04-17T03:15:04.736770" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:04.736812" level="INFO">${message} =  ^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.733971" elapsed="0.002867"/>
</kw>
<kw name="Dump_BGP_Speaker_Logs" owner="BGPSpeaker">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.737474" level="INFO">Executing command 'cat play.py.out'.</msg>
<msg time="2026-04-17T03:15:04.749559" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:04.749697" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${BGPSpeaker__OUTPUT_LOG}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:04.737334" elapsed="0.012398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.750420" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.749972" elapsed="0.000509"/>
</kw>
<doc>Send all output produced by the play.py utility to Robot logs.
This needs to be called if your suite detects play.py crashing and bypasses
Kill_BGP_Speaker in that case otherwise the output of play.py (which most
likely contains clues about why it crashed) will be lost.</doc>
<status status="PASS" start="2026-04-17T03:15:04.737040" elapsed="0.013522"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<status status="PASS" start="2026-04-17T03:15:04.750815" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-17T03:15:04.750654" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.750627" elapsed="0.000307"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.751178" elapsed="0.000032"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The prompt was not seen within timeout period.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.751428" elapsed="0.000039"/>
</kw>
<doc>Interrupt play.py, fail if no prompt is seen within SSHLibrary timeout.
Also dump the logs with the output the program produced.
This keyword is also suitable for stopping BGP manager.</doc>
<status status="PASS" start="2026-04-17T03:15:04.731977" elapsed="0.019611"/>
</kw>
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.753386" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:04.752656" elapsed="0.000821"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:15:04.752009" elapsed="0.001591"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.756358" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.755498" elapsed="0.000993"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.755459" elapsed="0.001085"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.756875" elapsed="0.000710"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.763675" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:04.763265" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:04.763916" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-17T03:15:04.763775" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.763757" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.764162" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.764340" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.764515" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.764685" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.764854" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.765024" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.765206" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:04.762942" elapsed="0.002341"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.755013" elapsed="0.010321"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:04.754194" elapsed="0.011181"/>
</kw>
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:15:04.664837" elapsed="0.100575"/>
</test>
<test id="s1-s3-t9" name="Store_Results_For_Talking_BGP_Speaker" line="148">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:04.769419" elapsed="0.000214"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:04.769147" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.770711" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.770603" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.770584" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.775694" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.775590" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.775572" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.776764" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:04.776386" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.777263" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:04.776955" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:04.777332" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:04.777481" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:04.775990" elapsed="0.001515"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.782980" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.782875" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.782855" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.784228" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.784121" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.784079" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:04.784734" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.784442" elapsed="0.000317"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.785190" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.784956" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.785970" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.785723" elapsed="0.001177">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:04.787083" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:04.787151" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.785380" elapsed="0.001795"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.787934" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.787695" elapsed="0.001080">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:04.788957" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:04.789003" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.787349" elapsed="0.001677"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.789944" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.789345" elapsed="0.000659">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:04.789121" elapsed="0.000951">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:04.789082" elapsed="0.001040">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.790288" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.790540" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.790395" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:04.790378" elapsed="0.000235"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.790646" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.793200" elapsed="0.000145"/>
</kw>
<msg time="2026-04-17T03:15:04.793405" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.792061" elapsed="0.001467"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.793801" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.794163" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.791453" elapsed="0.002916"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:04.790910" elapsed="0.003524"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.783798" elapsed="0.010725">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:15:04.794623" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.794666" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.783218" elapsed="0.011470"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.794957" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.794763" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.794744" elapsed="0.000283"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.795832" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:04.795728" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.795711" elapsed="0.000185"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.796183" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:04.796283" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.796051" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.796762" level="INFO">{1: 18}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.796500" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.797288" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.796962" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.797869" elapsed="0.000277"/>
</kw>
<msg time="2026-04-17T03:15:04.798244" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:04.798290" level="INFO">${old_connection_index} = 18</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.797500" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.799164" elapsed="0.000193"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.800559" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.800005" elapsed="0.001481">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.799529" elapsed="0.002055"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.802238" elapsed="0.000302"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.801758" elapsed="0.000865"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:04.798629" elapsed="0.004040"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:04.798403" elapsed="0.004315"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.798385" elapsed="0.004357"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:04.803610" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.803301" elapsed="0.000335"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:04.803683" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:04.803831" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.802955" elapsed="0.000901"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.804016" elapsed="0.000420"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.804716" level="INFO">index=19
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:04.804816" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:04.804611" elapsed="0.000231"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:04.804993" elapsed="0.002321"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.807746" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:04.808825" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.807488" elapsed="0.001774">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:04.822973" elapsed="0.000417"/>
</kw>
<msg time="2026-04-17T03:15:04.823481" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:04.821541" elapsed="0.002084"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.823876" elapsed="0.000025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.824053" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:04.810050" elapsed="0.014099"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:04.809539" elapsed="0.014697"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.795443" elapsed="0.028878">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.824662" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:04.824734" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:04.782541" elapsed="0.042295">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:04.824940" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:04.824983" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.777879" elapsed="0.047126"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:04.825630" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:04.825081" elapsed="0.000602"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:04.825062" elapsed="0.000645"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:04.777730" elapsed="0.048000"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:04.777560" elapsed="0.048201"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:04.775227" elapsed="0.050589"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:04.770299" elapsed="0.055571"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:04.769841" elapsed="0.056072"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:04.766531" elapsed="0.059433"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.833057" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:15:04.833193" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:15:04.826547" elapsed="0.006671"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.833524" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:15:04.845443" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:04.845643" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:04.833386" elapsed="0.012310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.846706" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.846053" elapsed="0.000745"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:04.847852" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:15:04.847208" elapsed="0.000764"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:15:04.826129" elapsed="0.022006"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.888777" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:15:04.888937" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:15:04.849347" elapsed="0.039628"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.889505" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:15:04.901739" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:04.901948" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:04.889279" elapsed="0.012722"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.903570" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.902434" elapsed="0.001253"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:04.904740" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:15:04.904158" elapsed="0.000714"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:15:04.848459" elapsed="0.056544"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.948710" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:15:04.948923" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:15:04.906344" elapsed="0.042633"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:04.949620" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:15:04.961709" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:04.961914" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:04.949395" elapsed="0.012572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:04.962967" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:04.962364" elapsed="0.000692"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:04.964132" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-talking-totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-talking-totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:15:04.963478" elapsed="0.000774"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>changecount-talking-totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:15:04.905449" elapsed="0.058931"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.004316" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:15:05.004515" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:15:04.965588" elapsed="0.038984"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.005337" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:15:05.017839" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:05.017978" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:05.004938" elapsed="0.013075"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.018714" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.018285" elapsed="0.000491"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:05.019424" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-talking-performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-talking-performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:15:05.019032" elapsed="0.000486"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>changecount-talking-performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:15:04.964699" elapsed="0.054948"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.020964" elapsed="0.000567"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.023493" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.022582" elapsed="0.001044"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.022536" elapsed="0.001145"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.024006" elapsed="0.000707"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.031294" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.030870" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:05.031541" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.031398" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.031380" elapsed="0.000247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.031778" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.031954" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.032143" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.032314" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.032483" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.032695" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.032869" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.030561" elapsed="0.002383"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.022046" elapsed="0.010948"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.020289" elapsed="0.012746"/>
</kw>
<doc>Store results for plotting</doc>
<status status="PASS" start="2026-04-17T03:15:04.765893" elapsed="0.267181"/>
</test>
<test id="s1-s3-t10" name="Wait_For_Stable_Ipv4_Topology_After_Talking" line="156">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.036907" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.036689" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.036671" elapsed="0.000315"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.036505" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.038027" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.037923" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.037905" elapsed="0.000203"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.042969" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.042865" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.042847" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.044043" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:05.043664" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.044555" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:05.044251" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:05.044626" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:05.044779" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:05.043283" elapsed="0.001521"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.050320" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.050214" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.050195" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.051597" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.051492" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.051473" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.052124" level="INFO">${karaf_connection_index} = 19</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.051812" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.052526" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.052314" elapsed="0.000238"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.053440" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.053049" elapsed="0.001028">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.054278" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:05.054324" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.052712" elapsed="0.001635"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.055150" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.054897" elapsed="0.000890">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.056031" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:05.056078" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.054550" elapsed="0.001571"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.057044" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.056429" elapsed="0.000695">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.056204" elapsed="0.000989">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.056178" elapsed="0.001047">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.057390" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.057628" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.057476" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.057459" elapsed="0.000245"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.057737" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.060260" elapsed="0.000151"/>
</kw>
<msg time="2026-04-17T03:15:05.060472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.059197" elapsed="0.001401"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.060903" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.061266" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.058566" elapsed="0.002883"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.057999" elapsed="0.003514"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.051190" elapsed="0.010408">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</kw>
<msg time="2026-04-17T03:15:05.061700" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.061744" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.050565" elapsed="0.011203"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.061950" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.061843" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.061825" elapsed="0.000190"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.062859" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.062755" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.062737" elapsed="0.000188"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.063245" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.063348" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.063082" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.063793" level="INFO">{1: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.063535" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.064296" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.063991" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.064862" elapsed="0.000279"/>
</kw>
<msg time="2026-04-17T03:15:05.065240" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.065291" level="INFO">${old_connection_index} = 19</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.064501" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.066184" elapsed="0.000194"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.068914" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.067047" elapsed="0.002729">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.066571" elapsed="0.003304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.070574" elapsed="0.000275"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.070053" elapsed="0.000877"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:05.065652" elapsed="0.005324"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.065421" elapsed="0.005605"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.065401" elapsed="0.005649"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.071908" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.071605" elapsed="0.000330"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:05.071982" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:05.072175" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.071275" elapsed="0.000926"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.072360" elapsed="0.000411"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.073051" level="INFO">index=20
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.073169" level="INFO">${karaf_connection_object} = index=20
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.072945" elapsed="0.000250"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.073351" elapsed="0.002299"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.076078" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:05.077511" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.075819" elapsed="0.002059">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.091924" elapsed="0.000408"/>
</kw>
<msg time="2026-04-17T03:15:05.092420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.090237" elapsed="0.002329"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.092744" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.092915" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.078728" elapsed="0.014268"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.078175" elapsed="0.014865"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.062458" elapsed="0.030677">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.093478" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.093551" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.049861" elapsed="0.043804">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:05.093771" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.093814" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.045197" elapsed="0.048675"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.094229" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.093951" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.093933" elapsed="0.000373"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:05.045033" elapsed="0.049296"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:05.044860" elapsed="0.049500"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:05.042508" elapsed="0.051907"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:05.037636" elapsed="0.056851"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.037204" elapsed="0.057328"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:05.034011" elapsed="0.060574"/>
</kw>
<kw name="Wait_For_Change_Count_To_Become_Stable" owner="ChangeCounter">
<kw name="Create_Limiting_Stability_Safe_Stateful_Validator_From_Value_To_Overcome" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.108906" level="INFO">${valid_minimum} = 2</msg>
<var>${valid_minimum}</var>
<arg>str(int(${maximum_invalid}) + 1)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.108424" elapsed="0.000509"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:05.109453" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:05.109775" level="INFO">${validator} = ['WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'valid_minimum': '2'}]</msg>
<var>${validator}</var>
<arg>WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword</arg>
<arg>state_holder</arg>
<arg>data_holder</arg>
<arg>valid_minimum=${valid_minimum}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.109156" elapsed="0.000645"/>
</kw>
<return>
<value>${validator}</value>
<status status="PASS" start="2026-04-17T03:15:05.109852" elapsed="0.000025"/>
</return>
<msg time="2026-04-17T03:15:05.109997" level="INFO">${validator} = ['WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'valid_minimum': '2'}]</msg>
<var>${validator}</var>
<arg>maximum_invalid=${count_to_overcome}</arg>
<doc>Helper function to use if maximum invalid value (instead of minimum valid) is known.</doc>
<status status="PASS" start="2026-04-17T03:15:05.108038" elapsed="0.001983"/>
</kw>
<kw name="Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.111414" level="INFO">${tmp} = 1</msg>
<var>${tmp}</var>
<arg>int(${count})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.111065" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.111870" level="INFO">count=1</msg>
<arg>count=${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.111605" elapsed="0.000307"/>
</kw>
<kw name="WaitUtils__Check_Sanity_And_Compute_Derived_Times" owner="WaitUtils">
<if>
<branch type="IF" condition="int(${count}) &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>\${count} is ${count} and not at least 1.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.112850" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.112626" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.112608" elapsed="0.000318"/>
</if>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:15:05.113368" level="INFO">${period_in_seconds} = 60.0</msg>
<var>${period_in_seconds}</var>
<arg>${period}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:15:05.113068" elapsed="0.000326"/>
</kw>
<if>
<branch type="IF" condition="${period_in_seconds} &lt;= 0.0">
<kw name="Fail" owner="BuiltIn">
<arg>\${period} ${period} has to be positive.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.113687" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.113463" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.113445" elapsed="0.000317"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:15:05.114080" level="INFO">${date_now} = 2026-04-17 03:15:05.114</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:15:05.113906" elapsed="0.000217"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:15:05.114537" level="INFO">${timeout_in_seconds} = 420.0</msg>
<var>${timeout_in_seconds}</var>
<arg>${timeout}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:15:05.114277" elapsed="0.000286"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-17T03:15:05.115033" level="INFO">${date_deadline} = 2026-04-17 03:22:05.114</msg>
<var>${date_deadline}</var>
<arg>${date_now}</arg>
<arg>${timeout_in_seconds}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-17T03:15:05.114721" elapsed="0.000338"/>
</kw>
<return>
<value>${timeout_in_seconds}</value>
<value>${period_in_seconds}</value>
<value>${date_deadline}</value>
<status status="PASS" start="2026-04-17T03:15:05.115121" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:05.115355" level="INFO">${timeout_in_seconds} = 420.0</msg>
<msg time="2026-04-17T03:15:05.115401" level="INFO">${period_in_seconds} = 60.0</msg>
<msg time="2026-04-17T03:15:05.115443" level="INFO">${date_deadline} = 2026-04-17 03:22:05.114</msg>
<var>${timeout_in_seconds}</var>
<var>${period_in_seconds}</var>
<var>${date_deadline}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${count}</arg>
<doc>Common checks for argument values. Return times in seconds and deadline date implied by timeout time.</doc>
<status status="PASS" start="2026-04-17T03:15:05.112226" elapsed="0.003239"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.116169" level="INFO">${maximum_sleeps} = 7</msg>
<var>${maximum_sleeps}</var>
<arg>math.ceil(${timeout_in_seconds} / ${period_in_seconds})</arg>
<arg>modules=math</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.115730" elapsed="0.000465"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.116618" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.116360" elapsed="0.000283"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.117077" level="INFO">${state} = 1</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.116802" elapsed="0.000314"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline" owner="WaitUtils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.118923" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.118668" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.119399" level="INFO">${state} = 1</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.119121" elapsed="0.000303"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.120064" level="INFO">${sleeps} = 0</msg>
<var>${sleeps}</var>
<arg>${count} - 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.119587" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="WaitUtils__Is_Deadline_Reachable" owner="WaitUtils">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:15:05.121450" level="INFO">${date_now} = 2026-04-17 03:15:05.121</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:15:05.121300" elapsed="0.000181"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-17T03:15:05.121993" level="INFO">${time_deadline} = 419.993</msg>
<var>${time_deadline}</var>
<arg>${date_deadline}</arg>
<arg>${date_now}</arg>
<arg>result_format=number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-17T03:15:05.121634" elapsed="0.000385"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.122595" level="INFO">${time_minimal} = 0.0</msg>
<var>${time_minimal}</var>
<arg>int(${sleeps_left}) * ${period_in_seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.122200" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="${time_minimal} &gt;= ${time_deadline}">
<kw name="Fail" owner="BuiltIn">
<arg>Not possible to succeed within the deadline. ${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.122942" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.122692" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.122672" elapsed="0.000346"/>
</if>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Compute time to be wasted in sleeps, compare to deadline. Fail with message when needed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.120709" elapsed="0.002356"/>
</kw>
<msg time="2026-04-17T03:15:05.123181" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.123224" level="INFO">${message} = None</msg>
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.120273" elapsed="0.002973"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.123427" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.123324" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.123307" elapsed="0.000195"/>
</if>
<for flavor="IN RANGE">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Closure_As_Is" owner="ScalarClosures">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.126161" level="INFO">${keyword} = Get_Change_Count</msg>
<msg time="2026-04-17T03:15:05.126208" level="INFO">${args} = []</msg>
<msg time="2026-04-17T03:15:05.126250" level="INFO">${kwargs} = {}</msg>
<var>${keyword}</var>
<var>${args}</var>
<var>${kwargs}</var>
<arg>${closure}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.125794" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Get_Change_Count" owner="ChangeCounter">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:05.130882" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${CC_DATA_CHANGE_COUNTER_URL}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.127719" elapsed="0.005428">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.133473" elapsed="0.000046"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${count}</var>
<arg>json.loads('${response.text}')["data-change-counter:data-change-counter"]["counter"][0]["count"]</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.133753" elapsed="0.000044"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.133878" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>GET data change request, assert status 200, return the value.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.127066" elapsed="0.006988">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var>${result}</var>
<arg>${keyword}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.126440" elapsed="0.007723">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.134226" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Run the keyword from closure without affecting arguments.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.125427" elapsed="0.008900">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:05.134432" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.134505" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.124892" elapsed="0.009639"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.134698" elapsed="0.027047"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:05.162751" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.162622" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.162598" elapsed="0.000219"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.163352" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.162977" elapsed="0.000446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:05.162191" elapsed="0.001344">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.163595" elapsed="0.000018"/>
</return>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.124494" elapsed="0.039203">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:05.163805" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.163850" level="INFO">${data} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${data}</var>
<arg>ScalarClosures.Run_Keyword_And_Collect_Garbage</arg>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.124055" elapsed="0.039819"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Getter failed: ${data}</value>
<status status="PASS" start="2026-04-17T03:15:05.164126" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.163950" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.163931" elapsed="0.000302"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.164398" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.164537" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.164503" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.164487" elapsed="0.000116"/>
</if>
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments</arg>
<arg>${safe_validator}</arg>
<arg>${state}</arg>
<arg>${data}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.164821" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Validator failed: ${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.164957" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.164923" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.164907" elapsed="0.000114"/>
</if>
<if>
<branch type="IF" condition="${sleeps_left} &lt;= 0">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.165119" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.165068" elapsed="0.000128"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.165054" elapsed="0.000173"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.165517" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.165687" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.165644" elapsed="0.000089"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.165621" elapsed="0.000133"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.165899" elapsed="0.000021"/>
</kw>
<var name="${sleeps_left}">0</var>
<status status="PASS" start="2026-04-17T03:15:05.123906" elapsed="0.042048"/>
</iter>
<var>${sleeps_left}</var>
<value>${count}-1</value>
<value>-1</value>
<value>-1</value>
<status status="PASS" start="2026-04-17T03:15:05.123538" elapsed="0.042450"/>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.166162" elapsed="0.000022"/>
</kw>
<msg time="2026-04-17T03:15:05.166387" level="INFO">${state} = 1</msg>
<msg time="2026-04-17T03:15:05.166432" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.166474" level="INFO">${result} = Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by New...</msg>
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>count=${count}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${safe_validator}</arg>
<arg>initial_state=${state}</arg>
<doc>Pass only if consecutively 1 times in a row with 60 between attempts: ${getter} creates data and ${safe_validator} passes. Validator updates its state even if it reports failure. Always return validator state, status and message.</doc>
<status status="PASS" start="2026-04-17T03:15:05.117933" elapsed="0.048611"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.166742" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.166635" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.166617" elapsed="0.000189"/>
</if>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.168111" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:15:05.168187" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.167830" elapsed="0.000416">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:15:05.168345" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.168388" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.167480" elapsed="0.000936"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.168591" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.168487" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.168468" elapsed="0.000187"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:15:05.169052" level="INFO">@{message_chunks} = [ Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by N...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:15:05.168803" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.172382" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:15:05.172457" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.169628" elapsed="0.002888">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:15:05.172616" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.172659" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.169262" elapsed="0.003420"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="PASS" start="2026-04-17T03:15:05.172857" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.172754" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.172735" elapsed="0.000202"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.173099" elapsed="0.000023"/>
</kw>
<arg>${result}</arg>
<arg>Not possible to succeed within the deadline.</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="PASS" start="2026-04-17T03:15:05.167077" elapsed="0.006177"/>
</kw>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.174592" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:15:05.174667" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.174303" elapsed="0.000422">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:15:05.174825" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.174868" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.173946" elapsed="0.000945"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.175069" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.174963" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.174945" elapsed="0.000206"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:15:05.175547" level="INFO">@{message_chunks} = [  | : ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnecti...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:15:05.175299" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.178582" level="INFO">Length is 0.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:15:05.176124" elapsed="0.002510"/>
</kw>
<msg time="2026-04-17T03:15:05.178726" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.178769" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.175740" elapsed="0.003051"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.178966" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.178863" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.178844" elapsed="0.000185"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.179498" level="FAIL">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.179197" elapsed="0.000362">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${result}</arg>
<arg>Getter failed</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.173572" elapsed="0.006089">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.179828" elapsed="0.000021"/>
</kw>
<var name="${try}">1</var>
<status status="FAIL" start="2026-04-17T03:15:05.117413" elapsed="0.062484">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${try}</var>
<value>1</value>
<value>${maximum_sleeps}+2</value>
<status status="FAIL" start="2026-04-17T03:15:05.117171" elapsed="0.062782">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.180133" elapsed="0.000021"/>
</kw>
<var>${result}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${repetitions}</arg>
<arg>getter=${ChangeCounter__getter}</arg>
<arg>safe_validator=${validator}</arg>
<arg>initial_state=${count_to_overcome}</arg>
<doc>Analogue of Wait Until Keyword Succeeds, but it passes state of validator around and exits early on getter failure. Calls GASSVHTSCBD to verify data is "stable".</doc>
<status status="FAIL" start="2026-04-17T03:15:05.110360" elapsed="0.069879">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.180308" elapsed="0.000017"/>
</return>
<arg>timeout=${bgp_emptying_timeout}</arg>
<arg>period=${CHECK_PERIOD_CHANGE_COUNT_SINGLE}</arg>
<arg>repetitions=${REPETITIONS_CHANGE_COUNT_SINGLE}</arg>
<arg>count_to_overcome=${last_change_count_single}</arg>
<doc>Each ${period} get count. After 1 of constant value above ${count_to_overcome} within ${timeout}, Return validator output. Fail early on getter error.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.107358" elapsed="0.073045">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.181870" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.181520" elapsed="0.000400"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.181122" elapsed="0.000850"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.182846" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.182427" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.182409" elapsed="0.000521"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.183077" elapsed="0.000326"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.188609" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.188203" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:05.188847" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.188708" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.188689" elapsed="0.000220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.189367" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.189057" elapsed="0.000336"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:05.189813" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Wait_For_Stable_Ipv4_Topology_After_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.189556" elapsed="0.000283"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:05.190191" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:05.190000" elapsed="0.000217"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.190772" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.190372" elapsed="0.000427"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.191276" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.190956" elapsed="0.000348"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.191885" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:05.191459" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.192395" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.192105" elapsed="0.000337"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.187875" elapsed="0.004621"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.182214" elapsed="0.010365"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.180757" elapsed="0.011866"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:05.033465" elapsed="0.159197">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s3-t11" name="Check_For_Empty_Ipv4_Topology_After_Talking" line="165">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:05.196285" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:05.195998" elapsed="0.000545"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.197765" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.197623" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.197597" elapsed="0.000257"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.202875" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.202768" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.202750" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.203996" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:05.203616" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.204498" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:05.204203" elapsed="0.000322"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:05.204572" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:05.204722" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:05.203185" elapsed="0.001561"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.210337" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.210231" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.210212" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.211604" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.211500" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.211480" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.212133" level="INFO">${karaf_connection_index} = 20</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.211818" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.212539" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.212323" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.213328" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.213062" elapsed="0.000904">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.214162" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:05.214206" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.212726" elapsed="0.001503"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.215012" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.214772" elapsed="0.001046">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.215999" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:05.216044" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.214398" elapsed="0.001669"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.216977" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.216382" elapsed="0.000738">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.216161" elapsed="0.001027">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.216141" elapsed="0.001079">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.217384" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.217614" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.217469" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.217452" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.217720" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.220241" elapsed="0.000144"/>
</kw>
<msg time="2026-04-17T03:15:05.220445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.219184" elapsed="0.001391"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.220852" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.221213" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.218551" elapsed="0.002844"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.217987" elapsed="0.003472"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.211197" elapsed="0.010345">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</kw>
<msg time="2026-04-17T03:15:05.221643" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.221687" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.210578" elapsed="0.011133"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.221892" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.221785" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.221766" elapsed="0.000190"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.223026" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.222921" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.222904" elapsed="0.000283"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.223469" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.223576" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.223350" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.224030" level="INFO">{1: 20}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.223758" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.224517" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.224266" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.225084" elapsed="0.000274"/>
</kw>
<msg time="2026-04-17T03:15:05.225456" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.225502" level="INFO">${old_connection_index} = 20</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.224723" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.226357" elapsed="0.000207"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.227652" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.227253" elapsed="0.001246">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.226737" elapsed="0.001893"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.229285" elapsed="0.000272"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.228806" elapsed="0.000830"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:05.225823" elapsed="0.003858"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.225599" elapsed="0.004130"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.225580" elapsed="0.004173"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.230623" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.230301" elapsed="0.000349"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:05.230697" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:05.230845" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.229960" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.231027" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.231730" level="INFO">index=21
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.231828" level="INFO">${karaf_connection_object} = index=21
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.231624" elapsed="0.000230"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.232003" elapsed="0.002431"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.234893" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:05.236402" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.234633" elapsed="0.002143">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.250528" elapsed="0.000417"/>
</kw>
<msg time="2026-04-17T03:15:05.251032" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.249131" elapsed="0.002062"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.251359" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.251525" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.237587" elapsed="0.014018"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.237053" elapsed="0.014596"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.222631" elapsed="0.029099">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.252068" elapsed="0.000068"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.252185" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.209878" elapsed="0.042413">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:05.252395" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.252438" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.205130" elapsed="0.047331"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.252795" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.252540" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.252521" elapsed="0.000387"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:05.204968" elapsed="0.047965"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:05.204800" elapsed="0.048164"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:05.202400" elapsed="0.050624"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:05.197245" elapsed="0.055902"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.196744" elapsed="0.056453"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:05.193794" elapsed="0.059457"/>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:05.259662" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.256738" elapsed="0.004929">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.261973" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.261793" elapsed="0.000235"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.261767" elapsed="0.000285"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.262087" elapsed="0.000033"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.256071" elapsed="0.006144">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.262393" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.262459" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.255526" elapsed="0.007079">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:05.262718" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.262763" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.255016" elapsed="0.007771"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.262950" elapsed="0.027310"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:05.291259" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.291126" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.291084" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.291847" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.291490" elapsed="0.000428">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:05.290701" elapsed="0.001327">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.292173" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.254479" elapsed="0.037796">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.292451" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.253810" elapsed="0.038755">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.253464" elapsed="0.039195">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.293985" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.293668" elapsed="0.000360"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.293292" elapsed="0.000786"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.294941" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.294530" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.294511" elapsed="0.000514"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.295193" elapsed="0.000309"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.300633" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.300218" elapsed="0.000442"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:05.300873" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.300732" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.300714" elapsed="0.000220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.301393" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.301082" elapsed="0.000338"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:05.301841" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_For_Empty_Ipv4_Topology_After_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.301579" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:05.302215" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:05.302027" elapsed="0.000214"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.302787" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.302395" elapsed="0.000420"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.303297" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.302973" elapsed="0.000351"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.303914" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:05.303480" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.304468" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.304173" elapsed="0.000343"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.299893" elapsed="0.004676"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.294317" elapsed="0.010300"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.292962" elapsed="0.011695"/>
</kw>
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:05.193187" elapsed="0.111506">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s3-t12" name="Start_Listening_BGP_Speaker" line="171">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.308496" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.308226" elapsed="0.000329">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.307990" elapsed="0.000628">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.307972" elapsed="0.000677">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.307807" elapsed="0.000928">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.308904" elapsed="0.000021"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.305606" elapsed="0.003405">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.310297" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.309976" elapsed="0.000362"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.309619" elapsed="0.000768"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.311239" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.310849" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.310831" elapsed="0.000493"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.311473" elapsed="0.000304"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.316939" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.316544" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:05.317218" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.317037" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.317019" elapsed="0.000279"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.317450" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.317623" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.317796" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.317963" elapsed="0.000083"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.318220" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.318391" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.318558" elapsed="0.000216"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.316235" elapsed="0.002596"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.310637" elapsed="0.008242"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.309310" elapsed="0.009609"/>
</kw>
<doc>Start Python speaker in listening mode.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.305084" elapsed="0.013871">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s3-t13" name="Reconfigure_ODL_To_Initiate_Connection" line="176">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.322737" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.322445" elapsed="0.000353">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.322226" elapsed="0.000634">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.322208" elapsed="0.000683">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.322021" elapsed="0.000954">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.323159" elapsed="0.000023"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.319813" elapsed="0.003455">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.324604" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.324239" elapsed="0.000421"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.323848" elapsed="0.000874"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.325646" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.325240" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.325220" elapsed="0.000516"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.325895" elapsed="0.000343"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.331461" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.331037" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:05.331702" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.331561" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.331543" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.331935" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.332124" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.332298" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.332465" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.332633" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.332847" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.333012" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.330727" elapsed="0.002371"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.324992" elapsed="0.008159"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.323544" elapsed="0.009649"/>
</kw>
<doc>Replace BGP peer config module, now with initiate-connection set to true.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.319259" elapsed="0.013971">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s3-t14" name="Wait_For_Stable_Listening_Ipv4_Topology" line="192">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.336863" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.336591" elapsed="0.000334">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.336373" elapsed="0.000616">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.336355" elapsed="0.000664">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.336190" elapsed="0.000931">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.337292" elapsed="0.000021"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.333980" elapsed="0.003418">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.338690" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.338354" elapsed="0.000379"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.337977" elapsed="0.000807"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.339618" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.339240" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.339220" elapsed="0.000483"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.339852" elapsed="0.000322"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.345389" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.344964" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:05.345632" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.345490" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.345471" elapsed="0.000244"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.345867" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.346041" elapsed="0.000019"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.346233" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.346401" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.346567" elapsed="0.000045"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.346767" elapsed="0.000066"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.346987" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.344649" elapsed="0.002414"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.339009" elapsed="0.008120"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.337674" elapsed="0.009496"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.333502" elapsed="0.013708">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s3-t15" name="Check_Listening_Ipv4_Topology_Count" line="200">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:05.350409" elapsed="0.000232"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:05.350142" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.351691" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.351584" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.351565" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.356693" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.356580" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.356562" elapsed="0.000210"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.357986" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:05.357474" elapsed="0.000539"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.358495" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:05.358196" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:05.358566" elapsed="0.000056"/>
</return>
<msg time="2026-04-17T03:15:05.358751" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:05.357046" elapsed="0.001729"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.364466" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.364360" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.364341" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.365718" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.365613" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.365594" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.366262" level="INFO">${karaf_connection_index} = 21</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.365934" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.366690" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.366451" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.367509" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.367247" elapsed="0.000923">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.368355" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:05.368401" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.366881" elapsed="0.001544"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.369201" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.368942" elapsed="0.000892">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.370014" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:05.370060" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.368598" elapsed="0.001485"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.371081" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.370440" elapsed="0.000729">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.370214" elapsed="0.001023">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.370193" elapsed="0.001076">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.371436" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.371668" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.371521" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.371504" elapsed="0.000239"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.371776" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.374324" elapsed="0.000145"/>
</kw>
<msg time="2026-04-17T03:15:05.374534" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.373224" elapsed="0.001452"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.374953" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.375326" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.372597" elapsed="0.002916"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.372049" elapsed="0.003527"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.365311" elapsed="0.010349">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</status>
</kw>
<msg time="2026-04-17T03:15:05.375761" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.375805" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.364689" elapsed="0.011140"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.376010" elapsed="0.000196"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.375904" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.375885" elapsed="0.000376"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.377208" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.377027" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.377009" elapsed="0.000265"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.377550" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.377650" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.377430" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.378102" level="INFO">{1: 21}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.377829" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.378545" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.378303" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.379167" elapsed="0.000260"/>
</kw>
<msg time="2026-04-17T03:15:05.379525" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.379570" level="INFO">${old_connection_index} = 21</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.378764" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.380419" elapsed="0.000190"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.381756" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.381363" elapsed="0.001308">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.380780" elapsed="0.001991"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.383430" elapsed="0.000275"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.382948" elapsed="0.000841"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:05.379889" elapsed="0.003946"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.379666" elapsed="0.004218"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.379648" elapsed="0.004261"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.384773" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.384464" elapsed="0.000335"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:05.384847" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:05.385051" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.384135" elapsed="0.000990"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.385327" elapsed="0.000422"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.386030" level="INFO">index=22
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.386168" level="INFO">${karaf_connection_object} = index=22
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.385925" elapsed="0.000271"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.386348" elapsed="0.002538"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.389405" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:05.390851" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.389126" elapsed="0.002279">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.405303" elapsed="0.000393"/>
</kw>
<msg time="2026-04-17T03:15:05.405784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.403774" elapsed="0.002156"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.406115" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.406285" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.392220" elapsed="0.014146"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.391690" elapsed="0.014722"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.376721" elapsed="0.029773">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.406888" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.406962" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.364009" elapsed="0.043061">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:05.407193" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.407236" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.359177" elapsed="0.048082"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.407642" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.407376" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.407357" elapsed="0.000361"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:05.359012" elapsed="0.048729"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:05.358833" elapsed="0.048942"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:05.356220" elapsed="0.051612"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:05.351291" elapsed="0.056598"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.350848" elapsed="0.057085"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:05.347970" elapsed="0.060015"/>
</kw>
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:05.413431" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.410842" elapsed="0.004240">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.415368" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.415195" elapsed="0.000228"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.415176" elapsed="0.000270"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.415480" elapsed="0.000015"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.410373" elapsed="0.005217">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.415767" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.415833" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.409838" elapsed="0.006091">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:05.416036" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.416081" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.409348" elapsed="0.006774"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.416302" elapsed="0.027423"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:05.444697" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.444569" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.444544" elapsed="0.000220"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.445288" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.444924" elapsed="0.000436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:05.444165" elapsed="0.001301">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.445593" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.408669" elapsed="0.037022">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.445866" elapsed="0.000021"/>
</kw>
<arg>${COUNT_CHANGE_COUNT_SINGLE}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.408225" elapsed="0.037749">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.447341" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.447008" elapsed="0.000375"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.446608" elapsed="0.000825"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.448265" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.447868" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.447849" elapsed="0.000503"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.448509" elapsed="0.000308"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.454073" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.453646" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:05.454362" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.454216" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.454196" elapsed="0.000228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.454985" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.454588" elapsed="0.000432"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:05.455600" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_Listening_Ipv4_Topology_Count</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.455250" elapsed="0.000384"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:05.456083" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:05.455856" elapsed="0.000276"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.456641" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.456294" elapsed="0.000375"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.457154" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.456828" elapsed="0.000355"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.457930" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:05.457341" elapsed="0.000642"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.458505" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.458196" elapsed="0.000357"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.453313" elapsed="0.005470"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.447655" elapsed="0.011180"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.446297" elapsed="0.012579"/>
</kw>
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:05.347421" elapsed="0.111492">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s3-t16" name="Kill_Listening_BGP_Speaker" line="206">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:05.462375" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:05.462079" elapsed="0.000561"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.463681" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.463569" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.463550" elapsed="0.000201"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.468728" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.468619" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.468601" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.469817" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:05.469432" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.470329" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:05.470012" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:05.470400" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:15:05.470564" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:05.469029" elapsed="0.001560"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.476354" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.476247" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.476227" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.477612" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.477508" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.477489" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.478141" level="INFO">${karaf_connection_index} = 22</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.477828" elapsed="0.000340"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.478548" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.478332" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.479374" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.479118" elapsed="0.000891">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.480208" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:05.480254" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.478763" elapsed="0.001514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.481072" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.480829" elapsed="0.000889">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.481899" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:05.481944" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.480485" elapsed="0.001483"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.482933" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.482289" elapsed="0.000706">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.482044" elapsed="0.001017">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.482024" elapsed="0.001086">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.483279" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.483516" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.483364" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.483347" elapsed="0.000244"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.483623" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.486136" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:15:05.486343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.485057" elapsed="0.001414"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.486784" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.487137" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.484438" elapsed="0.002882"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.483891" elapsed="0.003491"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.477207" elapsed="0.010259">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:15:05.487566" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.487609" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.476584" elapsed="0.011050"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.487815" elapsed="0.000174"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.487708" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.487690" elapsed="0.000354"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.488859" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.488754" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.488736" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.489217" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.489320" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.489081" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.489764" level="INFO">{1: 22}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.489503" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.490289" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.489964" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.490876" elapsed="0.000272"/>
</kw>
<msg time="2026-04-17T03:15:05.491279" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.491325" level="INFO">${old_connection_index} = 22</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.490501" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.492173" elapsed="0.000192"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.493424" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.493011" elapsed="0.001330">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.492539" elapsed="0.001898"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.495109" elapsed="0.000273"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.494613" elapsed="0.000851"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:05.491651" elapsed="0.003861"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.491423" elapsed="0.004138"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.491404" elapsed="0.004181"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.496438" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.496134" elapsed="0.000331"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:05.496514" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:05.496663" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.495794" elapsed="0.000893"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.496843" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.497547" level="INFO">index=23
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.497645" level="INFO">${karaf_connection_object} = index=23
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.497442" elapsed="0.000229"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.497822" elapsed="0.002458"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.500709" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:05.502227" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.500449" elapsed="0.002148">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.516366" elapsed="0.000415"/>
</kw>
<msg time="2026-04-17T03:15:05.516878" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.515006" elapsed="0.002031"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.517251" elapsed="0.000025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.517453" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.503434" elapsed="0.014119"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.502906" elapsed="0.014705"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.488464" elapsed="0.029250">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.518595" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.518778" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.475881" elapsed="0.043047">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:05.519036" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.519079" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.471048" elapsed="0.048076"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.519490" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.519203" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.519184" elapsed="0.000385"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:05.470879" elapsed="0.048720"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:05.470644" elapsed="0.048991"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:05.468253" elapsed="0.051437"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:05.463276" elapsed="0.056468"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.462822" elapsed="0.056967"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:05.459897" elapsed="0.059943"/>
</kw>
<kw name="Store_Change_Count">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Change_Count" owner="ChangeCounter">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:05.523645" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${CC_DATA_CHANGE_COUNTER_URL}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.521028" elapsed="0.004251">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.525473" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${count}</var>
<arg>json.loads('${response.text}')["data-change-counter:data-change-counter"]["counter"][0]["count"]</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.525648" elapsed="0.000020"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.525714" elapsed="0.000015"/>
</return>
<doc>GET data change request, assert status 200, return the value.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.520731" elapsed="0.005085">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:05.525915" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.525960" level="INFO">${count} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${count}</var>
<arg>ChangeCounter.Get_Change_Count</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.520318" elapsed="0.005666"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${last_change_count_single}</arg>
<arg>${count}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.526299" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.526054" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.526035" elapsed="0.000343"/>
</if>
<doc>Get the count of changes from BGP change counter. Ignore error or store the value.</doc>
<status status="PASS" start="2026-04-17T03:15:05.520016" elapsed="0.006408"/>
</kw>
<kw name="Kill_BGP_Speaker" owner="BGPSpeaker">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.527851" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.527317" elapsed="0.000562"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-17T03:15:05.528037" elapsed="0.000277"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-17T03:15:05.527031" elapsed="0.001352"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.530163" level="INFO">^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:15:05.528879" elapsed="0.001343"/>
</kw>
<msg time="2026-04-17T03:15:05.530314" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.530357" level="INFO">${message} =  ^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.528546" elapsed="0.001837"/>
</kw>
<kw name="Dump_BGP_Speaker_Logs" owner="BGPSpeaker">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.531060" level="INFO">Executing command 'cat play.py.out'.</msg>
<msg time="2026-04-17T03:15:05.543179" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:05.543401" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${BGPSpeaker__OUTPUT_LOG}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:05.530918" elapsed="0.012539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.544446" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.543834" elapsed="0.000704"/>
</kw>
<doc>Send all output produced by the play.py utility to Robot logs.
This needs to be called if your suite detects play.py crashing and bypasses
Kill_BGP_Speaker in that case otherwise the output of play.py (which most
likely contains clues about why it crashed) will be lost.</doc>
<status status="PASS" start="2026-04-17T03:15:05.530617" elapsed="0.014044"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<status status="PASS" start="2026-04-17T03:15:05.545126" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.544801" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.544760" elapsed="0.000592"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.545822" elapsed="0.000067"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The prompt was not seen within timeout period.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.546285" elapsed="0.000063"/>
</kw>
<doc>Interrupt play.py, fail if no prompt is seen within SSHLibrary timeout.
Also dump the logs with the output the program produced.
This keyword is also suitable for stopping BGP manager.</doc>
<status status="PASS" start="2026-04-17T03:15:05.526707" elapsed="0.019789"/>
</kw>
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.548468" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.547713" elapsed="0.000851"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:15:05.547033" elapsed="0.001660"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.551847" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.550802" elapsed="0.001187"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.550759" elapsed="0.001284"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.552417" elapsed="0.000724"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.559551" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.559142" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:05.559790" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.559651" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.559633" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.560019" elapsed="0.000020"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.560208" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.560383" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.560551" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.560719" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.560887" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.561065" elapsed="0.000050"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.558818" elapsed="0.002367"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.550292" elapsed="0.010944"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.549405" elapsed="0.011872"/>
</kw>
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:15:05.459323" elapsed="0.101992"/>
</test>
<test id="s1-s3-t17" name="Store_Results_For_Listening_BGP_Speaker" line="216">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:05.564878" elapsed="0.000223"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:05.564610" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.566279" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.566171" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.566151" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.571307" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.571200" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.571182" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.572804" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:05.572240" elapsed="0.000604"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.573551" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:05.573109" elapsed="0.000480"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:05.573653" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:15:05.573877" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:05.571648" elapsed="0.002265"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.579937" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.579831" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.579812" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.581357" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.581233" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.581212" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.582002" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.581617" elapsed="0.000417"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.582521" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.582260" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.583448" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.583193" elapsed="0.001039">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.584418" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:05.584464" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.582809" elapsed="0.001679"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.585286" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.585024" elapsed="0.000913">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.586142" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:05.586189" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.584675" elapsed="0.001537"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.587180" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.586514" elapsed="0.000729">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.586289" elapsed="0.001023">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.586269" elapsed="0.001075">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.587517" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.587766" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.587614" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.587590" elapsed="0.000291"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.587916" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.590516" elapsed="0.000156"/>
</kw>
<msg time="2026-04-17T03:15:05.590782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.589425" elapsed="0.001491"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.591216" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.591551" elapsed="0.000086"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.588778" elapsed="0.002969"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.588208" elapsed="0.003605"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.580845" elapsed="0.011054">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:15:05.592002" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.592046" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.580207" elapsed="0.011863"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.592280" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.592170" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.592150" elapsed="0.000196"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.593234" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.593046" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.593027" elapsed="0.000272"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.593569" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.593670" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.593455" elapsed="0.000241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.594122" level="INFO">{1: 23}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.593849" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.594561" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.594320" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.595150" elapsed="0.000256"/>
</kw>
<msg time="2026-04-17T03:15:05.595502" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.595546" level="INFO">${old_connection_index} = 23</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.594779" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.596386" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.597839" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.597304" elapsed="0.001372">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.596747" elapsed="0.002054"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.599481" elapsed="0.000270"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.598977" elapsed="0.000855"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:05.595863" elapsed="0.004014"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.595642" elapsed="0.004283"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.595623" elapsed="0.004326"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.600825" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.600502" elapsed="0.000383"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:05.600935" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:05.601101" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.600176" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.601286" elapsed="0.000406"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.601967" level="INFO">index=24
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.602065" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.601863" elapsed="0.000242"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.602257" elapsed="0.002370"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.605063" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:05.606286" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.604798" elapsed="0.001891">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.621266" elapsed="0.000407"/>
</kw>
<msg time="2026-04-17T03:15:05.621765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.619891" elapsed="0.002025"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.622085" elapsed="0.000041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.622274" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.607657" elapsed="0.014701"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.607016" elapsed="0.015389"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.592756" elapsed="0.029734">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.622900" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.622976" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.579495" elapsed="0.043829">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:05.623442" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.623487" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.574482" elapsed="0.049028"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.623865" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.623595" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.623571" elapsed="0.000374"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:05.574263" elapsed="0.049706"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:05.573992" elapsed="0.050009"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:05.570822" elapsed="0.053237"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:05.565861" elapsed="0.058274"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.565429" elapsed="0.058753"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:05.562191" elapsed="0.062044"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.630583" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:15:05.630690" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:15:05.624859" elapsed="0.005859"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.631070" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:15:05.642944" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:05.643110" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:05.630929" elapsed="0.012222"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.643973" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.643396" elapsed="0.000670"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:05.645214" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:15:05.644517" elapsed="0.000840"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:15:05.624435" elapsed="0.021086"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.688674" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:15:05.688829" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:15:05.646938" elapsed="0.041930"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.689382" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:15:05.701390" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:05.701604" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:05.689164" elapsed="0.012504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.703373" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.702041" elapsed="0.001434"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:05.704595" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:15:05.703923" elapsed="0.000851"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:15:05.645916" elapsed="0.059022"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.744951" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:15:05.745247" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:15:05.706501" elapsed="0.038787"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.746023" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:15:05.758438" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:05.758593" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:05.745715" elapsed="0.012921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.759449" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.758955" elapsed="0.000577"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:05.760740" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-listening-totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-listening-totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:15:05.759988" elapsed="0.000881"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>changecount-listening-totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:15:05.705446" elapsed="0.055568"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.804397" level="INFO">6 files:
.bash_logout
.bashrc
.profile
ipaddr.py
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:15:05.804619" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'ipaddr.py', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:15:05.762389" elapsed="0.042287"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.805431" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:15:05.817803" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:05.818011" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:05.805066" elapsed="0.012998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.819084" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.818473" elapsed="0.000736"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:05.820254" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-listening-performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-listening-performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:15:05.819618" elapsed="0.000794"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>changecount-listening-performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:15:05.761418" elapsed="0.059231"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.822037" elapsed="0.000572"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.824354" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.823669" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.823634" elapsed="0.000865"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.824730" elapsed="0.000494"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.832488" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.832036" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:15:05.832827" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.832591" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.832572" elapsed="0.000352"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.833125" elapsed="0.000031"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.833362" elapsed="0.000024"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.833609" elapsed="0.000025"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.833822" elapsed="0.000024"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.834003" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.834193" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.834364" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.831712" elapsed="0.002728"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.823215" elapsed="0.011276"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.821326" elapsed="0.013207"/>
</kw>
<doc>Store results for plotting</doc>
<status status="PASS" start="2026-04-17T03:15:05.561665" elapsed="0.272907"/>
</test>
<test id="s1-s3-t18" name="Wait_For_Stable_Ipv4_Topology_After_Listening" line="226">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.838827" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.838600" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.838582" elapsed="0.000367"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.838411" elapsed="0.000585"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.840028" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.839920" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.839901" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.845079" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.844973" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.844955" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.846182" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:05.845782" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.846670" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:05.846376" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:05.846783" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:05.846974" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:05.845398" elapsed="0.001600"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.852594" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.852484" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.852463" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.853881" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.853775" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.853756" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.854420" level="INFO">${karaf_connection_index} = 24</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.854119" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.854827" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.854609" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.855960" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.855545" elapsed="0.001177">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.856930" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:05.856976" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.855145" elapsed="0.001854"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.857785" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.857540" elapsed="0.000896">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:05.858618" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:05.858664" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.857190" elapsed="0.001497"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.859660" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.859030" elapsed="0.000692">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:05.858762" elapsed="0.001030">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:05.858743" elapsed="0.001080">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.859987" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.860235" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.860072" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.860056" elapsed="0.000253"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.860341" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.862829" elapsed="0.000165"/>
</kw>
<msg time="2026-04-17T03:15:05.863059" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.861773" elapsed="0.001451"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.863500" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.863831" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.861160" elapsed="0.002851"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.860609" elapsed="0.003466"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.853473" elapsed="0.010740">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</kw>
<msg time="2026-04-17T03:15:05.864317" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.864361" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.852819" elapsed="0.011565"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.864566" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.864459" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.864440" elapsed="0.000190"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.865512" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.865365" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.865333" elapsed="0.000278"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.866015" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.866235" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.865842" elapsed="0.000435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.866934" level="INFO">{1: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.866505" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.867585" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.867281" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.868181" elapsed="0.000259"/>
</kw>
<msg time="2026-04-17T03:15:05.868537" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.868581" level="INFO">${old_connection_index} = 24</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.867789" elapsed="0.000814"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.869437" elapsed="0.000202"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.872477" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.870428" elapsed="0.002935">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.869811" elapsed="0.003654"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.874135" elapsed="0.000313"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.873645" elapsed="0.000890"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:05.868900" elapsed="0.005683"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.868677" elapsed="0.005954"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.868659" elapsed="0.005996"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:05.875608" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.875300" elapsed="0.000335"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:05.875684" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:05.875834" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.874907" elapsed="0.000951"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.876017" elapsed="0.000436"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.876735" level="INFO">index=25
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:05.876834" level="INFO">${karaf_connection_object} = index=25
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:05.876627" elapsed="0.000232"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.877049" elapsed="0.002358"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:05.879843" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:05.881233" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.879579" elapsed="0.002069">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:05.895707" elapsed="0.000409"/>
</kw>
<msg time="2026-04-17T03:15:05.896208" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.894357" elapsed="0.002022"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.896586" elapsed="0.000026"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.896767" elapsed="0.000025"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:05.882477" elapsed="0.014395"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:05.881936" elapsed="0.014992"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.865034" elapsed="0.032005">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.897603" elapsed="0.000029"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.897681" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.852143" elapsed="0.045646">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:05.897895" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.897938" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.847409" elapsed="0.050553"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.898313" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.898038" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.898019" elapsed="0.000371"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:05.847258" elapsed="0.051156"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:05.847059" elapsed="0.051387"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:05.844613" elapsed="0.053889"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:05.839624" elapsed="0.058931"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.839174" elapsed="0.059424"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:05.835586" elapsed="0.063061"/>
</kw>
<kw name="Wait_For_Change_Count_To_Become_Stable" owner="ChangeCounter">
<kw name="Create_Limiting_Stability_Safe_Stateful_Validator_From_Value_To_Overcome" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.912646" level="INFO">${valid_minimum} = 2</msg>
<var>${valid_minimum}</var>
<arg>str(int(${maximum_invalid}) + 1)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.912244" elapsed="0.000430"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:05.913223" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:05.913435" level="INFO">${validator} = ['WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'valid_minimum': '2'}]</msg>
<var>${validator}</var>
<arg>WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword</arg>
<arg>state_holder</arg>
<arg>data_holder</arg>
<arg>valid_minimum=${valid_minimum}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.912887" elapsed="0.000574"/>
</kw>
<return>
<value>${validator}</value>
<status status="PASS" start="2026-04-17T03:15:05.913513" elapsed="0.000026"/>
</return>
<msg time="2026-04-17T03:15:05.913660" level="INFO">${validator} = ['WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'valid_minimum': '2'}]</msg>
<var>${validator}</var>
<arg>maximum_invalid=${count_to_overcome}</arg>
<doc>Helper function to use if maximum invalid value (instead of minimum valid) is known.</doc>
<status status="PASS" start="2026-04-17T03:15:05.911844" elapsed="0.001841"/>
</kw>
<kw name="Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.915263" level="INFO">${tmp} = 1</msg>
<var>${tmp}</var>
<arg>int(${count})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.914853" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.915781" level="INFO">count=1</msg>
<arg>count=${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.915501" elapsed="0.000324"/>
</kw>
<kw name="WaitUtils__Check_Sanity_And_Compute_Derived_Times" owner="WaitUtils">
<if>
<branch type="IF" condition="int(${count}) &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>\${count} is ${count} and not at least 1.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.916775" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.916541" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.916523" elapsed="0.000332"/>
</if>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:15:05.917276" level="INFO">${period_in_seconds} = 60.0</msg>
<var>${period_in_seconds}</var>
<arg>${period}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:15:05.917001" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="${period_in_seconds} &lt;= 0.0">
<kw name="Fail" owner="BuiltIn">
<arg>\${period} ${period} has to be positive.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.917593" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.917373" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.917354" elapsed="0.000316"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:15:05.917982" level="INFO">${date_now} = 2026-04-17 03:15:05.918</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:15:05.917815" elapsed="0.000193"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:15:05.918415" level="INFO">${timeout_in_seconds} = 420.0</msg>
<var>${timeout_in_seconds}</var>
<arg>${timeout}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:15:05.918175" elapsed="0.000265"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-17T03:15:05.918938" level="INFO">${date_deadline} = 2026-04-17 03:22:05.918</msg>
<var>${date_deadline}</var>
<arg>${date_now}</arg>
<arg>${timeout_in_seconds}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-17T03:15:05.918597" elapsed="0.000371"/>
</kw>
<return>
<value>${timeout_in_seconds}</value>
<value>${period_in_seconds}</value>
<value>${date_deadline}</value>
<status status="PASS" start="2026-04-17T03:15:05.919016" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:05.919271" level="INFO">${timeout_in_seconds} = 420.0</msg>
<msg time="2026-04-17T03:15:05.919319" level="INFO">${period_in_seconds} = 60.0</msg>
<msg time="2026-04-17T03:15:05.919360" level="INFO">${date_deadline} = 2026-04-17 03:22:05.918</msg>
<var>${timeout_in_seconds}</var>
<var>${period_in_seconds}</var>
<var>${date_deadline}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${count}</arg>
<doc>Common checks for argument values. Return times in seconds and deadline date implied by timeout time.</doc>
<status status="PASS" start="2026-04-17T03:15:05.916134" elapsed="0.003249"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.919987" level="INFO">${maximum_sleeps} = 7</msg>
<var>${maximum_sleeps}</var>
<arg>math.ceil(${timeout_in_seconds} / ${period_in_seconds})</arg>
<arg>modules=math</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.919561" elapsed="0.000452"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.920448" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.920192" elapsed="0.000281"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.920909" level="INFO">${state} = 1</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.920631" elapsed="0.000304"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline" owner="WaitUtils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.922757" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.922496" elapsed="0.000287"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.923334" level="INFO">${state} = 1</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.923014" elapsed="0.000347"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.924011" level="INFO">${sleeps} = 0</msg>
<var>${sleeps}</var>
<arg>${count} - 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.923523" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="WaitUtils__Is_Deadline_Reachable" owner="WaitUtils">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:15:05.925412" level="INFO">${date_now} = 2026-04-17 03:15:05.925</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:15:05.925258" elapsed="0.000180"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-17T03:15:05.925953" level="INFO">${time_deadline} = 419.993</msg>
<var>${time_deadline}</var>
<arg>${date_deadline}</arg>
<arg>${date_now}</arg>
<arg>result_format=number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-17T03:15:05.925598" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.926532" level="INFO">${time_minimal} = 0.0</msg>
<var>${time_minimal}</var>
<arg>int(${sleeps_left}) * ${period_in_seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.926159" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="${time_minimal} &gt;= ${time_deadline}">
<kw name="Fail" owner="BuiltIn">
<arg>Not possible to succeed within the deadline. ${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.926872" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.926626" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.926607" elapsed="0.000367"/>
</if>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Compute time to be wasted in sleeps, compare to deadline. Fail with message when needed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.924661" elapsed="0.002361"/>
</kw>
<msg time="2026-04-17T03:15:05.927174" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.927217" level="INFO">${message} = None</msg>
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.924220" elapsed="0.003020"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.927425" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.927320" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.927302" elapsed="0.000193"/>
</if>
<for flavor="IN RANGE">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Closure_As_Is" owner="ScalarClosures">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.930163" level="INFO">${keyword} = Get_Change_Count</msg>
<msg time="2026-04-17T03:15:05.930209" level="INFO">${args} = []</msg>
<msg time="2026-04-17T03:15:05.930252" level="INFO">${kwargs} = {}</msg>
<var>${keyword}</var>
<var>${args}</var>
<var>${kwargs}</var>
<arg>${closure}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.929807" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Get_Change_Count" owner="ChangeCounter">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:05.934595" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${CC_DATA_CHANGE_COUNTER_URL}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.931575" elapsed="0.005129">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.936977" elapsed="0.000047"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${count}</var>
<arg>json.loads('${response.text}')["data-change-counter:data-change-counter"]["counter"][0]["count"]</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.937273" elapsed="0.000044"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.937397" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>GET data change request, assert status 200, return the value.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.930953" elapsed="0.006626">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var>${result}</var>
<arg>${keyword}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.930444" elapsed="0.007192">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.937694" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Run the keyword from closure without affecting arguments.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.929441" elapsed="0.008353">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:05.937899" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.937944" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.928895" elapsed="0.009073"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.938150" elapsed="0.028437"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:05.967624" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.967488" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.967463" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.968228" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.967852" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:05.967050" elapsed="0.001368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.968549" elapsed="0.000019"/>
</return>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.928491" elapsed="0.040163">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:05.968764" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.968808" level="INFO">${data} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${data}</var>
<arg>ScalarClosures.Run_Keyword_And_Collect_Garbage</arg>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.928051" elapsed="0.040782"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Getter failed: ${data}</value>
<status status="PASS" start="2026-04-17T03:15:05.969015" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.968908" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.968890" elapsed="0.000233"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.969289" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.969425" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.969389" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.969373" elapsed="0.000120"/>
</if>
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments</arg>
<arg>${safe_validator}</arg>
<arg>${state}</arg>
<arg>${data}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.969736" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Validator failed: ${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.969877" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.969842" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.969825" elapsed="0.000117"/>
</if>
<if>
<branch type="IF" condition="${sleeps_left} &lt;= 0">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.970025" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.969991" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.969977" elapsed="0.000127"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.970262" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.970393" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.970358" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:05.970342" elapsed="0.000116"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.970597" elapsed="0.000020"/>
</kw>
<var name="${sleeps_left}">0</var>
<status status="PASS" start="2026-04-17T03:15:05.927901" elapsed="0.042749"/>
</iter>
<var>${sleeps_left}</var>
<value>${count}-1</value>
<value>-1</value>
<value>-1</value>
<status status="PASS" start="2026-04-17T03:15:05.927532" elapsed="0.043152"/>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.970837" elapsed="0.000020"/>
</kw>
<msg time="2026-04-17T03:15:05.971107" level="INFO">${state} = 1</msg>
<msg time="2026-04-17T03:15:05.971153" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.971194" level="INFO">${result} = Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by New...</msg>
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>count=${count}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${safe_validator}</arg>
<arg>initial_state=${state}</arg>
<doc>Pass only if consecutively 1 times in a row with 60 between attempts: ${getter} creates data and ${safe_validator} passes. Validator updates its state even if it reports failure. Always return validator state, status and message.</doc>
<status status="PASS" start="2026-04-17T03:15:05.921784" elapsed="0.049434"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.971406" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.971304" elapsed="0.000144"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.971286" elapsed="0.000184"/>
</if>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.972888" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:15:05.972962" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.972482" elapsed="0.000540">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:15:05.973176" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.973220" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.972132" elapsed="0.001112"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.973424" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.973317" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.973298" elapsed="0.000191"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:15:05.973892" level="INFO">@{message_chunks} = [ Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by N...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:15:05.973640" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.977076" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:15:05.977166" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.974440" elapsed="0.002787">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:15:05.977328" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.977371" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.974102" elapsed="0.003293"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="PASS" start="2026-04-17T03:15:05.977573" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-17T03:15:05.977467" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.977448" elapsed="0.000205"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.977802" elapsed="0.000021"/>
</kw>
<arg>${result}</arg>
<arg>Not possible to succeed within the deadline.</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="PASS" start="2026-04-17T03:15:05.971737" elapsed="0.006215"/>
</kw>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.979250" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:15:05.979322" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.978979" elapsed="0.000402">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:15:05.979479" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:05.979521" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.978623" elapsed="0.000922"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.979757" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.979630" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.979599" elapsed="0.000225"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:15:05.980240" level="INFO">@{message_chunks} = [  | : ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnecti...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:15:05.979973" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.983305" level="INFO">Length is 0.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:15:05.980820" elapsed="0.002531"/>
</kw>
<msg time="2026-04-17T03:15:05.983442" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:05.983484" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:05.980432" elapsed="0.003074"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.983711" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.983578" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.983560" elapsed="0.000218"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.984245" level="FAIL">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.983926" elapsed="0.000381">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${result}</arg>
<arg>Getter failed</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.978246" elapsed="0.006164">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.984579" elapsed="0.000021"/>
</kw>
<var name="${try}">1</var>
<status status="FAIL" start="2026-04-17T03:15:05.921256" elapsed="0.063393">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${try}</var>
<value>1</value>
<value>${maximum_sleeps}+2</value>
<status status="FAIL" start="2026-04-17T03:15:05.920991" elapsed="0.063716">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.984870" elapsed="0.000021"/>
</kw>
<var>${result}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${repetitions}</arg>
<arg>getter=${ChangeCounter__getter}</arg>
<arg>safe_validator=${validator}</arg>
<arg>initial_state=${count_to_overcome}</arg>
<doc>Analogue of Wait Until Keyword Succeeds, but it passes state of validator around and exits early on getter failure. Calls GASSVHTSCBD to verify data is "stable".</doc>
<status status="FAIL" start="2026-04-17T03:15:05.914100" elapsed="0.070875">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:05.985044" elapsed="0.000016"/>
</return>
<arg>timeout=${bgp_emptying_timeout}</arg>
<arg>period=${CHECK_PERIOD_CHANGE_COUNT_SINGLE}</arg>
<arg>repetitions=${REPETITIONS_CHANGE_COUNT_SINGLE}</arg>
<arg>count_to_overcome=${last_change_count_single}</arg>
<doc>Each ${period} get count. After 1 of constant value above ${count_to_overcome} within ${timeout}, Return validator output. Fail early on getter error.</doc>
<status status="FAIL" start="2026-04-17T03:15:05.911151" elapsed="0.074002">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.986474" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:05.986160" elapsed="0.000355"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:05.985783" elapsed="0.000783"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:05.987419" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:05.987022" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.987003" elapsed="0.000500"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:05.987653" elapsed="0.000306"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.993196" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.992773" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:05.993434" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:05.993296" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:05.993277" elapsed="0.000217"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.993934" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:05.993644" elapsed="0.000315"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:05.994432" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Wait_For_Stable_Ipv4_Topology_After_Listening</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:05.994168" elapsed="0.000290"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:05.994798" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:05.994625" elapsed="0.000199"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.995365" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.994997" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.995851" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:05.995550" elapsed="0.000328"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.996480" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:05.996035" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:05.996978" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:05.996689" elapsed="0.000336"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:05.992459" elapsed="0.004619"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:05.986786" elapsed="0.010376"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:05.985475" elapsed="0.011728"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:05.834955" elapsed="0.162288">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s3-t19" name="Check_For_Empty_Ipv4_Topology_After_Listening" line="235">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:06.000591" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:06.000324" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.001831" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.001722" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.001703" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.006785" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.006681" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.006663" elapsed="0.000188"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.007889" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:06.007512" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.008391" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:06.008080" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:06.008459" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:06.008611" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:06.007123" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.014382" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.014275" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.014255" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.015690" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.015586" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.015568" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:06.016225" level="INFO">${karaf_connection_index} = 25</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.015904" elapsed="0.000348"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.016631" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.016414" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.017423" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.017170" elapsed="0.000948">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:06.018304" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:06.018348" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.016816" elapsed="0.001555"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.019160" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.018884" elapsed="0.000909">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:06.019973" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:06.020018" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.018542" elapsed="0.001499"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.020979" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.020356" elapsed="0.000690">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:06.020132" elapsed="0.001008">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:06.020112" elapsed="0.001061">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.021340" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.021567" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.021424" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.021407" elapsed="0.000233"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.021672" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.024234" elapsed="0.000145"/>
</kw>
<msg time="2026-04-17T03:15:06.024442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.023164" elapsed="0.001433"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.024910" elapsed="0.000076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.025279" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.022504" elapsed="0.002954"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:06.021952" elapsed="0.003569"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.015284" elapsed="0.010322">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</kw>
<msg time="2026-04-17T03:15:06.025740" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:06.025784" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.014606" elapsed="0.011202"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.025990" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.025884" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.025865" elapsed="0.000191"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.027048" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.026931" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.026913" elapsed="0.000219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.027407" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:06.027509" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.027287" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.027945" level="INFO">{1: 25}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.027691" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.028402" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.028161" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.028964" elapsed="0.000363"/>
</kw>
<msg time="2026-04-17T03:15:06.029433" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:06.029478" level="INFO">${old_connection_index} = 25</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.028606" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.030349" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.031635" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.031242" elapsed="0.001311">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.030712" elapsed="0.001939"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.033392" elapsed="0.000273"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.032827" elapsed="0.000919"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:06.029810" elapsed="0.003981"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.029582" elapsed="0.004257"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.029563" elapsed="0.004301"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:06.034720" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.034419" elapsed="0.000328"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:06.034795" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:06.034964" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.034076" elapsed="0.000914"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.035184" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.035884" level="INFO">index=26
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:06.035982" level="INFO">${karaf_connection_object} = index=26
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.035779" elapsed="0.000229"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.036172" elapsed="0.002427"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.039067" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:06.040495" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.038770" elapsed="0.002096">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.054583" elapsed="0.000412"/>
</kw>
<msg time="2026-04-17T03:15:06.055084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.052987" elapsed="0.002259"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.055413" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.055580" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.041746" elapsed="0.013919"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:06.041227" elapsed="0.014494"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.026642" elapsed="0.029162">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.056164" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.056237" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.013926" elapsed="0.042415">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:06.056446" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:06.056489" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.009125" elapsed="0.047390"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.056849" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.056593" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.056574" elapsed="0.000350"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:06.008923" elapsed="0.048024"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:06.008724" elapsed="0.048254"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:06.006328" elapsed="0.050705"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:06.001437" elapsed="0.055957"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.001000" elapsed="0.056445"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:05.997998" elapsed="0.059503"/>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:06.063434" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.060545" elapsed="0.004509">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.065441" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.065270" elapsed="0.000228"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.065249" elapsed="0.000274"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.065557" elapsed="0.000015"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.060118" elapsed="0.005580">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.065876" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.065942" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.059586" elapsed="0.006455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:15:06.066163" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:06.066208" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.059083" elapsed="0.007149"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.066395" elapsed="0.028277"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:06.095755" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.095622" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.095599" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.096371" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.095983" elapsed="0.000462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:15:06.095198" elapsed="0.001359">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.096617" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.058593" elapsed="0.038119">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.096884" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.058057" elapsed="0.038975">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.057715" elapsed="0.039453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.098522" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:06.098197" elapsed="0.000367"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:06.097804" elapsed="0.000809"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.099480" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.099080" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.099061" elapsed="0.000577"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.099794" elapsed="0.000367"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.105391" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.104957" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:06.105632" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.105492" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.105473" elapsed="0.000221"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.106154" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.105844" elapsed="0.000336"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.106604" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_For_Empty_Ipv4_Topology_After_Listening</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.106341" elapsed="0.000289"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:06.106967" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:06.106793" elapsed="0.000231"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.107542" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.107198" elapsed="0.000370"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.108029" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.107725" elapsed="0.000331"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.108665" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:06.108229" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.109183" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.108875" elapsed="0.000356"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:06.104645" elapsed="0.004639"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.098832" elapsed="0.010501"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:06.097492" elapsed="0.011881"/>
</kw>
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:05.997478" elapsed="0.111933">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s3-t20" name="Restore_Data_Change_Counter_Configuration" line="241">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:06.112874" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:06.112610" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.114131" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.114007" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.113989" elapsed="0.000247"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.119194" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.119074" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.119056" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.120270" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:06.119874" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.120753" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:06.120462" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:06.120823" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:15:06.120978" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:06.119491" elapsed="0.001511"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.126713" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.126606" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.126586" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.128027" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.127922" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.127903" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:06.128572" level="INFO">${karaf_connection_index} = 26</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.128270" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.128975" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.128759" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.129772" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.129521" elapsed="0.000906">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:06.130610" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:06.130656" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.129180" elapsed="0.001499"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.131492" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.131251" elapsed="0.000885">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:06.132317" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:06.132362" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.130852" elapsed="0.001533"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.133302" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.132682" elapsed="0.000681">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:06.132461" elapsed="0.000969">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:06.132441" elapsed="0.001020">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.133629" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.133858" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.133713" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.133697" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.133964" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.136462" elapsed="0.000150"/>
</kw>
<msg time="2026-04-17T03:15:06.136709" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.135420" elapsed="0.001419"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.137152" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.137486" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.134777" elapsed="0.002893"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:06.134247" elapsed="0.003487"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.127617" elapsed="0.010200">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</status>
</kw>
<msg time="2026-04-17T03:15:06.137918" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:06.137963" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.126938" elapsed="0.011048"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.138187" elapsed="0.000174"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.138062" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.138043" elapsed="0.000372"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.139254" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.139148" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.139130" elapsed="0.000192"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.139603" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:06.139704" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.139480" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.140161" level="INFO">{1: 26}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.139888" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.140606" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.140362" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.141245" elapsed="0.000259"/>
</kw>
<msg time="2026-04-17T03:15:06.141601" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:06.141648" level="INFO">${old_connection_index} = 26</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.140814" elapsed="0.000856"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.142499" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.143769" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.143374" elapsed="0.001247">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.142862" elapsed="0.001857"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.145469" elapsed="0.000272"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.144895" elapsed="0.000928"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:06.141968" elapsed="0.003900"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.141744" elapsed="0.004173"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.141725" elapsed="0.004217"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:06.146807" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.146503" elapsed="0.000331"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:06.146881" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:06.147057" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.146168" elapsed="0.000914"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.147292" elapsed="0.000411"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.147983" level="INFO">index=27
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:06.148084" level="INFO">${karaf_connection_object} = index=27
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.147877" elapsed="0.000249"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.148281" elapsed="0.002533"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.151283" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:06.152470" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.150986" elapsed="0.001860">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.166842" elapsed="0.000597"/>
</kw>
<msg time="2026-04-17T03:15:06.167527" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.165499" elapsed="0.002174"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.167838" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.168003" elapsed="0.000019"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.153658" elapsed="0.014424"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:06.153141" elapsed="0.015005"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.138812" elapsed="0.029417">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.168578" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.168650" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.126265" elapsed="0.042495">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:06.168881" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:06.168924" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.121395" elapsed="0.047552"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.169302" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.169026" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.169006" elapsed="0.000372"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:06.121246" elapsed="0.048156"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:06.121057" elapsed="0.048378"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:06.118694" elapsed="0.050797"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:06.113723" elapsed="0.055823"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.113303" elapsed="0.056288"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:06.110446" elapsed="0.059196"/>
</kw>
<kw name="Reconfigure_Topology_Name" owner="ChangeCounter">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.174966" level="INFO">&amp;{mapping} = { DEVICE_NAME=controller-config | TOPOLOGY_NAME=example-linkstate-topology }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>TOPOLOGY_NAME=${topology_name}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.174512" elapsed="0.000483"/>
</kw>
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.208938" level="INFO">${file_path_stream} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.208566" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:15:06.209732" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.209488" elapsed="0.000308">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-17T03:15:06.209888" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:15:06.209152" elapsed="0.000759"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.210474" level="INFO">${file_path} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:06.210078" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:06.210800" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/location.uri"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-17T03:15:06.210956" level="INFO">${template} = rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-17T03:15:06.210663" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.211416" level="INFO">rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.211172" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.212422" level="INFO">mapping: {'DEVICE_NAME': 'controller-config', 'TOPOLOGY_NAME': 'example-linkstate-topology'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.212166" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.212891" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.212630" elapsed="0.000288"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.213600" level="INFO">${value} = controller-config</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:15:06.213296" elapsed="0.000330"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.214570" level="INFO">${encoded} = controller-config</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.214160" elapsed="0.000437"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:15:06.214646" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:06.214797" level="INFO">${encoded_value} = controller-config</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:15:06.213821" elapsed="0.001000"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.214976" elapsed="0.000278"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">controller-config</var>
<status status="PASS" start="2026-04-17T03:15:06.213155" elapsed="0.002140"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.215838" level="INFO">${value} = example-linkstate-topology</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:15:06.215543" elapsed="0.000321"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.216785" level="INFO">${encoded} = example-linkstate-topology</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.216392" elapsed="0.000419"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:15:06.216860" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:06.217007" level="INFO">${encoded_value} = example-linkstate-topology</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:15:06.216054" elapsed="0.000977"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.217202" elapsed="0.000221"/>
</kw>
<var name="${key}">TOPOLOGY_NAME</var>
<var name="${value}">example-linkstate-topology</var>
<status status="PASS" start="2026-04-17T03:15:06.215407" elapsed="0.002056"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-17T03:15:06.212965" elapsed="0.004532"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-17T03:15:06.217539" elapsed="0.000026"/>
</return>
<msg time="2026-04-17T03:15:06.217691" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'controller-config', 'TOPOLOGY_NAME': 'example-linkstate-topology'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-17T03:15:06.211825" elapsed="0.005891"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.211526" elapsed="0.006255"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.217959" elapsed="0.000195"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.217807" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.211508" elapsed="0.006702"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.218807" level="INFO">${final_text} = rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.218360" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-17T03:15:06.218881" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="PASS" start="2026-04-17T03:15:06.207936" elapsed="0.011064"/>
</kw>
<msg time="2026-04-17T03:15:06.219067" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.195200" elapsed="0.023929"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.231894" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.244333" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.256760" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.256958" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.257148" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.257513" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.257365" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.257351" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.257730" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.257897" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.258063" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-17T03:15:06.257323" elapsed="0.000805"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.257223" elapsed="0.000931"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.258305" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.258378" elapsed="0.000015"/>
</return>
<msg time="2026-04-17T03:15:06.258494" level="INFO">${uri} = rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-17T03:15:06.190874" elapsed="0.067645"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.284925" level="INFO">${file_path_stream} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.284554" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:15:06.285680" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter.vanadium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.285466" elapsed="0.000278">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter.vanadium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-17T03:15:06.285835" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:15:06.285132" elapsed="0.000726"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.286424" level="INFO">${file_path} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:06.286026" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:06.286749" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/data.xml"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-17T03:15:06.286881" level="INFO">${template} = &lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;$TOPOLOGY_NAME&lt;/topology-...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-17T03:15:06.286615" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.287353" level="INFO">&lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;$TOPOLOGY_NAME&lt;/topology-name&gt;
&lt;/data-change-counter-config&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.287068" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-17T03:15:06.287760" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.287467" elapsed="0.000351"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.288302" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'controller-config', 'TOPOLOGY_NAME': 'example-linkstate-topology'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.287992" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.287843" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.287448" elapsed="0.000937"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.289131" level="INFO">${final_text} = &lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;example-linkstate-topolog...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.288540" elapsed="0.000621"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-17T03:15:06.289209" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="PASS" start="2026-04-17T03:15:06.283925" elapsed="0.005407"/>
</kw>
<msg time="2026-04-17T03:15:06.289384" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.271268" elapsed="0.018163"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.301988" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.314355" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.326788" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.326984" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.327200" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.327563" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.327417" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.327402" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.327785" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.327956" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.328140" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-17T03:15:06.327375" elapsed="0.000819"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.327275" elapsed="0.000967"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.328397" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.328471" elapsed="0.000015"/>
</return>
<msg time="2026-04-17T03:15:06.328589" level="INFO">${data} = &lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;example-linkstate-topolog...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-17T03:15:06.268594" elapsed="0.060023"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:15:06.329910" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.329641" elapsed="0.000332">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-17T03:15:06.330064" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:15:06.329296" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.330423" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.330175" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.330957" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.330669" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.330502" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.330156" elapsed="0.000881"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.333410" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:06.331218" elapsed="0.002218"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-17T03:15:06.333486" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:06.333635" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-17T03:15:06.328954" elapsed="0.004705"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.335027" level="INFO">rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.334781" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.335658" level="INFO">&lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;example-linkstate-topology&lt;/topology-name&gt;
&lt;/data-change-counter-config&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.335342" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.336126" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.335866" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.336564" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.336325" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:06.337444" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-17T03:15:06.337235" elapsed="0.000235"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-17T03:15:06.337802" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-17T03:15:06.337627" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.337980" elapsed="0.000214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.338636" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.338379" elapsed="0.000301"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-17T03:15:06.338722" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:06.338873" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-17T03:15:06.336813" elapsed="0.002085"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:06.344386" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.341242" elapsed="0.005034">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:06.338965" elapsed="0.007400">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.346556" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.346398" elapsed="0.000224"/>
</branch>
<status status="FAIL" start="2026-04-17T03:15:06.338948" elapsed="0.007697">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.347020" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.347191" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.347147" elapsed="0.000102"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.347128" elapsed="0.000148"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.347427" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.347493" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.333988" elapsed="0.013608">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.347670" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.179786" elapsed="0.167978">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.348113" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.347908" elapsed="0.000273"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.347890" elapsed="0.000314"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.348237" elapsed="0.000014"/>
</return>
<arg>${CHANGE_COUNTER_TEMPLATE_FOLDER}${/}change_counter</arg>
<arg>mapping=${mapping}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.175367" elapsed="0.172968">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>example-linkstate-topology</arg>
<doc>Configure data change counter to count transactions affecting
${topology_name} instead of previously configured topology name.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.174159" elapsed="0.174294">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.350014" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:06.349702" elapsed="0.000355"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:06.349264" elapsed="0.000864"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.350946" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.350567" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.350548" elapsed="0.000480"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.351234" elapsed="0.000315"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.356706" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.356307" elapsed="0.000427"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:06.356945" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.356805" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.356787" elapsed="0.000219"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.357494" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.357173" elapsed="0.000347"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.357935" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Restore_Data_Change_Counter_Configuration</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.357681" elapsed="0.000280"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:06.358311" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:06.358138" elapsed="0.000198"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.358828" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.358492" elapsed="0.000363"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.359353" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.359012" elapsed="0.000368"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.359962" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:06.359536" elapsed="0.000509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.360551" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.360219" elapsed="0.000380"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:06.355978" elapsed="0.004676"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.350353" elapsed="0.010349"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:06.348851" elapsed="0.011892"/>
</kw>
<doc>Configure data change counter back to count transactions affecting example-linkstate-topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.109814" elapsed="0.250968">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s3-t21" name="Delete_Bgp_Peer_Configuration" line="246">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:15:06.364181" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:15:06.363901" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.365444" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.365336" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.365317" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.370553" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.370444" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.370426" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.371648" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:06.371270" elapsed="0.000544"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.372287" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:06.371977" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:06.372356" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:06.372506" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:06.370847" elapsed="0.001683"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.378313" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.378207" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.378187" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.379602" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.379471" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.379453" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:06.380127" level="INFO">${karaf_connection_index} = 27</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.379818" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.380530" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.380317" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.381320" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.381054" elapsed="0.000879">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:06.382135" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:06.382181" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.380718" elapsed="0.001486"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.383003" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.382759" elapsed="0.000904">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:06.383846" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:06.383892" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.382411" elapsed="0.001504"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.384837" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.384236" elapsed="0.000661">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:06.383991" elapsed="0.000972">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:06.383972" elapsed="0.001023">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.385177" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.385409" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.385263" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.385246" elapsed="0.000237"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.385519" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.388081" elapsed="0.000173"/>
</kw>
<msg time="2026-04-17T03:15:06.388316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.386949" elapsed="0.001492"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.388714" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.389046" elapsed="0.000090"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.386333" elapsed="0.002913"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:06.385785" elapsed="0.003523"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.379169" elapsed="0.010220">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</status>
</kw>
<msg time="2026-04-17T03:15:06.389489" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:06.389536" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.378536" elapsed="0.011023"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.389739" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.389634" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.389615" elapsed="0.000187"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.390783" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.390680" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.390662" elapsed="0.000185"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.391146" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:06.391250" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.391001" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.391684" level="INFO">{1: 27}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.391429" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.392201" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.391882" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.392770" elapsed="0.000256"/>
</kw>
<msg time="2026-04-17T03:15:06.393174" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:06.393221" level="INFO">${old_connection_index} = 27</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.392408" elapsed="0.000835"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.394050" elapsed="0.000208"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.395337" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.394902" elapsed="0.001366">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.394430" elapsed="0.001935"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.396999" elapsed="0.000301"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.396541" elapsed="0.000840"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:06.393540" elapsed="0.003886"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.393317" elapsed="0.004158"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.393299" elapsed="0.004200"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:06.398374" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.398031" elapsed="0.000372"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:06.398451" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:06.398600" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.397707" elapsed="0.000917"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.398782" elapsed="0.000445"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.399510" level="INFO">index=28
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:06.399610" level="INFO">${karaf_connection_object} = index=28
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.399401" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.399786" elapsed="0.003726"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.403948" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:06.405248" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.403684" elapsed="0.001933">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:06.419572" elapsed="0.000386"/>
</kw>
<msg time="2026-04-17T03:15:06.420046" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.418199" elapsed="0.002010"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.420377" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.420545" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:06.406432" elapsed="0.014194"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:06.405896" elapsed="0.014775"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.390391" elapsed="0.030361">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.421338" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.421455" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.377836" elapsed="0.043728">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:06.421671" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:06.421715" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.372895" elapsed="0.048843"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.422072" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.421815" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.421796" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:06.372749" elapsed="0.049439"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:06.372581" elapsed="0.049638"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:06.370076" elapsed="0.052197"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:15:06.365034" elapsed="0.057292"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.364592" elapsed="0.057777"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:15:06.361719" elapsed="0.060699"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.423186" level="INFO">&amp;{mapping} = { DEVICE_NAME=controller-config | BGP_NAME=example-bgp-peer | IP=10.30.171.117 | BGP_RIB_OPENCONFIG=example-bgp-rib }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>BGP_NAME=${BGP_PEER_NAME}</arg>
<arg>IP=${TOOLS_SYSTEM_IP}</arg>
<arg>BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.422588" elapsed="0.000627"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.465911" level="INFO">${file_path_stream} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.465539" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:15:06.466683" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.466458" elapsed="0.000291">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-17T03:15:06.466840" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:15:06.466120" elapsed="0.000744"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.467462" level="INFO">${file_path} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:06.467030" elapsed="0.000459"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-17T03:15:06.467795" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer/location.uri"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-17T03:15:06.467940" level="INFO">${template} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,$BGP_RIB_OPENCONFIG/bgp-openconfig-ext...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-17T03:15:06.467657" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.468383" level="INFO">rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,$BGP_RIB_OPENCONFIG/bgp-openconfig-extensions:bgp/neighbors/neighbor=$IP
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.468139" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.469587" level="INFO">mapping: {'DEVICE_NAME': 'controller-config', 'BGP_NAME': 'example-bgp-peer', 'IP': '10.30.171.117', 'BGP_RIB_OPENCONFIG': 'example-bgp-rib'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.469326" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.470058" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.469796" elapsed="0.000288"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.470772" level="INFO">${value} = controller-config</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:15:06.470472" elapsed="0.000360"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.471612" level="INFO">${encoded} = controller-config</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.471388" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:15:06.471789" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:06.471939" level="INFO">${encoded_value} = controller-config</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:15:06.471032" elapsed="0.000931"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.472133" elapsed="0.000230"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">controller-config</var>
<status status="PASS" start="2026-04-17T03:15:06.470330" elapsed="0.002073"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.472947" level="INFO">${value} = example-bgp-peer</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:15:06.472650" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.473744" level="INFO">${encoded} = example-bgp-peer</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.473521" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:15:06.473818" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:06.473965" level="INFO">${encoded_value} = example-bgp-peer</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:15:06.473181" elapsed="0.000808"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.474159" elapsed="0.000221"/>
</kw>
<var name="${key}">BGP_NAME</var>
<var name="${value}">example-bgp-peer</var>
<status status="PASS" start="2026-04-17T03:15:06.472515" elapsed="0.001905"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.474959" level="INFO">${value} = 10.30.171.117</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:15:06.474665" elapsed="0.000319"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.475762" level="INFO">${encoded} = 10.30.171.117</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.475553" elapsed="0.000234"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:15:06.475835" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:06.475981" level="INFO">${encoded_value} = 10.30.171.117</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:15:06.475232" elapsed="0.000772"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.476172" elapsed="0.000218"/>
</kw>
<var name="${key}">IP</var>
<var name="${value}">10.30.171.117</var>
<status status="PASS" start="2026-04-17T03:15:06.474531" elapsed="0.001899"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.476965" level="INFO">${value} = example-bgp-rib</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:15:06.476673" elapsed="0.000317"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.477724" level="INFO">${encoded} = example-bgp-rib</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.477509" elapsed="0.000239"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:15:06.477797" elapsed="0.000027"/>
</return>
<msg time="2026-04-17T03:15:06.477941" level="INFO">${encoded_value} = example-bgp-rib</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:15:06.477195" elapsed="0.000770"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.478146" elapsed="0.000219"/>
</kw>
<var name="${key}">BGP_RIB_OPENCONFIG</var>
<var name="${value}">example-bgp-rib</var>
<status status="PASS" start="2026-04-17T03:15:06.476539" elapsed="0.001866"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-17T03:15:06.470149" elapsed="0.008289"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-17T03:15:06.478480" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:06.478637" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'controller-config', 'BGP_NAME': 'example-bgp-peer', 'IP': '10.30.171.117', 'BGP_RIB_OPENCONFIG': 'example-bgp-rib'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-17T03:15:06.468797" elapsed="0.009865"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.468493" elapsed="0.010200"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.478867" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.478717" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.468474" elapsed="0.010468"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.479729" level="INFO">${final_text} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensi...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.479100" elapsed="0.000657"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-17T03:15:06.479846" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="PASS" start="2026-04-17T03:15:06.464909" elapsed="0.015060"/>
</kw>
<msg time="2026-04-17T03:15:06.480022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.452268" elapsed="0.027799"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.492954" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.505482" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.517923" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.518137" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.518315" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.518676" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.518531" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:06.518516" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.518895" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.519064" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.519279" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-17T03:15:06.518489" elapsed="0.000843"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.518389" elapsed="0.000968"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.519506" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.519579" elapsed="0.000015"/>
</return>
<msg time="2026-04-17T03:15:06.519698" level="INFO">${uri} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensi...</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-17T03:15:06.447949" elapsed="0.071775"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.520861" level="INFO">rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.520576" elapsed="0.000331"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:06.525948" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.523032" elapsed="0.004646">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:06.520973" elapsed="0.006786">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.527949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.527793" elapsed="0.000217"/>
</branch>
<status status="FAIL" start="2026-04-17T03:15:06.520955" elapsed="0.007078">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.528429" elapsed="0.000026"/>
</kw>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.528501" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="FAIL" start="2026-04-17T03:15:06.519990" elapsed="0.008613">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:06.528666" elapsed="0.000015"/>
</return>
<arg>${BGP_VARIABLES_FOLDER}${/}bgp_peer</arg>
<arg>mapping=${mapping}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.423450" elapsed="0.105307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.530063" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:06.529754" elapsed="0.000366"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:15:06.529390" elapsed="0.000782"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.530984" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:06.530604" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.530585" elapsed="0.000482"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.531250" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.536778" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.536374" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:06.537084" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:06.536941" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.536921" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.537617" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:06.537314" elapsed="0.000330"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:15:06.538057" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Delete_Bgp_Peer_Configuration</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.537804" elapsed="0.000279"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:15:06.538436" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:15:06.538261" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.538953" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.538617" elapsed="0.000363"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.539508" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:06.539154" elapsed="0.000384"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.540145" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:15:06.539698" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.540643" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.540355" elapsed="0.000334"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:15:06.536049" elapsed="0.004695"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:06.530391" elapsed="0.010401"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:15:06.529065" elapsed="0.011768"/>
</kw>
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<status status="FAIL" start="2026-04-17T03:15:06.361142" elapsed="0.179730">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.542888" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:15:06.565780" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:06.565986" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:06.542751" elapsed="0.023289"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:15:06.566183" elapsed="0.000069"/>
</return>
<msg time="2026-04-17T03:15:06.566521" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:15:06.542479" elapsed="0.024095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.567591" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:06.566927" elapsed="0.000762"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.569820" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:06.570006" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:06.569044" elapsed="0.001018"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:15:06.570493" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-17T03:15:06.570253" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:06.570211" elapsed="0.000456"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.571007" elapsed="0.000046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.571493" elapsed="0.000032"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:06.571754" elapsed="0.000030"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:15:06.568320" elapsed="0.003559"/>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:15:06.542194" elapsed="0.029760"/>
</kw>
<arg>KillPythonTool.Search_And_Kill_Remote_Python</arg>
<arg>'play\.py'</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.541762" elapsed="0.030257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Sysstat_Statistics" owner="Utils">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.573498" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:06.573643" level="INFO">${current_connection} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:06.573333" elapsed="0.000353"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.575117" level="INFO">${odl_connection} = 29</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:06.574550" elapsed="0.000608"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:06.577860" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:06.577972" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:06.577479" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.578266" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:06.579907" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:07.339191" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:12:59 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:06.579565" elapsed="0.759790"/>
</kw>
<msg time="2026-04-17T03:15:07.339442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.578987" elapsed="0.760551"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:06.576816" elapsed="0.762894"/>
</kw>
<msg time="2026-04-17T03:15:07.339771" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:06.576231" elapsed="0.763602"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:06.575451" elapsed="0.764461"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-17T03:15:07.339965" elapsed="0.000043"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.179 and return its identifier.</doc>
<status status="PASS" start="2026-04-17T03:15:06.574066" elapsed="0.766097"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.341940" level="INFO">sar -A -f /var/log/sa/sa*</msg>
<arg>sar -A -f /var/log/sa/sa*</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-17T03:15:07.340396" elapsed="0.001604"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.344370" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<msg time="2026-04-17T03:15:07.344478" level="INFO">${output} = [?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<var>${output}</var>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:15:07.342198" elapsed="0.002393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.345131" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:07.344790" elapsed="0.000392"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.345347" elapsed="0.000173"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:07.345565" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:07.349452" elapsed="0.000147"/>
</kw>
<msg time="2026-04-17T03:15:07.349646" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:07.348898" elapsed="0.000810"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:07.349908" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:07.350216" elapsed="0.000027"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:07.345942" elapsed="0.004369"/>
</kw>
<doc>Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
that node was running. Used for debug purposes. Returns whole output of sysstat.</doc>
<status status="PASS" start="2026-04-17T03:15:06.572897" elapsed="0.777529"/>
</kw>
<arg>Utils.Get_Sysstat_Statistics</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:06.572269" elapsed="0.778227"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:07.350747" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:15:07.350668" elapsed="0.000238"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:15:07.351059" elapsed="0.000401"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:15:06.541536" elapsed="0.809983"/>
</kw>
<doc>BGP performance of ingesting from 1 iBGP peer, data change counter is used.

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 suite uses play.py as single iBGP peer.
The suite only looks at example-ipv4-topology, so RIB is not examined.

This suite requires odl-bgpcep-data-change-counter to be installed so
make sure it is added to "install-features" of any jobs that are going
to invoke it.

The suite consists of two halves, differing on which side initiates BGP connection.
Data change counter is a lightweight way to detect "work is being done".
WaitUtils provide a nice Keyword to wait for stability, but it needs
initial value, that is why Store_Change_Count appears just before work-inducing action.
The time for Wait_For_Stable_* cases to finish is the main performance metric.
After waiting for stability is done, full check on number of prefixes present is performed.

Brief description how to configure BGP peer can be found here:
https://wiki.opendaylight.org/view/BGP_LS_PCEP:User_Guide#BGP_Peer
http://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html#bgp-peering

TODO: Currently, if a bug causes zero increase of data changes,
affected test cases will wait for max time. Reconsider.
If zero increase is allowed as stable, higher number of repetitions should be required.

Additionally this test suite is not compatible with Helium and Hydrogen
releases as they don't include data change counter feature.
Use the other version of the suite (singlepeer_prefixcount.robot) to test them.</doc>
<status status="FAIL" start="2026-04-17T03:12:58.817954" elapsed="128.533598"/>
</suite>
<suite id="s1-s4" name="Bgp App Peer Prefixcount" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/bgp_app_peer_prefixcount.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.465977" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:07.459572" elapsed="0.006487"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:15:07.459240" elapsed="0.006947"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.473723" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:15:07.467908" elapsed="0.005859"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:07.474106" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:07.473903" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:07.473863" elapsed="0.000360"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.475006" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:07.474479" elapsed="0.000582"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.475846" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:15:07.475318" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:15:07.476673" elapsed="0.000470"/>
</kw>
<msg time="2026-04-17T03:15:07.477284" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:07.477337" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:07.476160" elapsed="0.001200"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.478307" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:07.477714" elapsed="0.000630"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.479870" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:07.479458" elapsed="0.000447"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.480500" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:07.480131" elapsed="0.000410"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.481209" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.480773" elapsed="0.000477"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.485044" elapsed="0.000251"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.485811" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:07.485469" elapsed="0.000369"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.486005" elapsed="0.000259"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.487114" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:07.486793" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:15:07.487190" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:15:07.487360" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:07.486477" elapsed="0.000908"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:07.488060" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854412395d0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:07.487558" elapsed="0.000668"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.488402" elapsed="0.000202"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:15:07.484353" elapsed="0.004313"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:07.484045" elapsed="0.004666"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:15:07.481322" elapsed="0.007422"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.489354" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:07.488924" elapsed="0.000473"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.489991" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:07.489572" elapsed="0.000470"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.490700" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:07.490254" elapsed="0.000495"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:07.478742" elapsed="0.012075"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:15:07.467369" elapsed="0.023512"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:07.491123" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:07.490966" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:07.490943" elapsed="0.000256"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.494486" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:07.494076" elapsed="0.000447"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.495004" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:07.494700" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:07.495133" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:15:07.495300" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:07.493730" elapsed="0.001596"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:07.496391" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.496115" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.497256" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:07.497360" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.497056" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:07.501252" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:07.500645" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:07.500625" elapsed="0.000751"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.502027" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:07.502294" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.501586" elapsed="0.000761"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.503334" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:07.502627" elapsed="0.000816"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.504724" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.503766" elapsed="0.001013"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.506572" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:07.506753" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:07.506203" elapsed="0.000595"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:07.507191" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.508912" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:07.833950" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:07 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:07.508572" elapsed="0.325788"/>
</kw>
<msg time="2026-04-17T03:15:07.834525" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:07.508101" elapsed="0.326732"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:07.505270" elapsed="0.329857"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.837014" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:15:07.850796" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:15:07.851353" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:07.851585" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:07.835954" elapsed="0.015745"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.852811" elapsed="0.001329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.857732" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:07.855587" elapsed="0.002453"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:07.859222" elapsed="0.000118"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:07.858563" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:07.858464" elapsed="0.001145"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:15:07.860576" elapsed="0.000108"/>
</return>
<status status="PASS" start="2026-04-17T03:15:07.859797" elapsed="0.001002"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:07.859756" elapsed="0.001100"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:07.860942" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:07.867002" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.868280" elapsed="0.000483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.869181" elapsed="0.000340"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:07.861818" elapsed="0.007810"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:15:07.499565" elapsed="0.370332"/>
</kw>
<msg time="2026-04-17T03:15:07.869991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:07.498647" elapsed="0.371431"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:07.498122" elapsed="0.372100"/>
</kw>
<msg time="2026-04-17T03:15:07.870283" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:07.497555" elapsed="0.372802"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:07.873903" elapsed="0.000342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.874425" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.874737" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:07.870792" elapsed="0.004096"/>
</kw>
<msg time="2026-04-17T03:15:07.875000" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:15:07.496648" elapsed="0.378379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.875567" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:07.875305" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:07.875653" elapsed="0.000029"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:15:07.495701" elapsed="0.380089"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:07.495509" elapsed="0.380322"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:07.495378" elapsed="0.380498"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:15:07.491440" elapsed="0.384525"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:15:07.876219" elapsed="0.000227"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:07.893430" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:07.893241" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:07.893207" elapsed="0.000326"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.893997" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:07.894524" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.893776" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.895226" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:07.894811" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:07.895861" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:07.895515" elapsed="0.000473"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:07.897013" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:15:07.896771" elapsed="0.000386">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:15:07.897273" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:07.897318" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:07.896295" elapsed="0.001046"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:07.897665" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:07.897419" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:07.897399" elapsed="0.000364"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:07.898557" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.898284" elapsed="0.000302"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:07.898633" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:07.898785" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:07.897982" elapsed="0.000828"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.898971" elapsed="0.000442"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.899704" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:07.899806" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.899593" elapsed="0.000239"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.900031" elapsed="0.004531"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:07.905240" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:07.906381" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:07.904942" elapsed="0.001910">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:07.910249" elapsed="0.000547"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:07.910975" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:07.911314" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:07.907743" elapsed="0.003725"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:07.907185" elapsed="0.004331"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:07.892669" elapsed="0.018938">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:08.931571" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:08.931400" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:08.931365" elapsed="0.000307"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:08.932179" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:08.932399" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:08.931938" elapsed="0.000491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:08.932959" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:08.932625" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:08.933514" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:08.933231" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:08.934227" elapsed="0.000202"/>
</kw>
<msg time="2026-04-17T03:15:08.934531" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:08.934593" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:08.933761" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:08.935606" elapsed="0.000161"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:08.936505" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:08.936329" elapsed="0.000808">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:08.935944" elapsed="0.001261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:08.937962" elapsed="0.000105"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:08.937402" elapsed="0.000732"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:08.935000" elapsed="0.003189"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:08.934750" elapsed="0.003490"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:08.934731" elapsed="0.003535"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:08.939169" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:08.938836" elapsed="0.000362"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:08.939346" elapsed="0.000043"/>
</return>
<msg time="2026-04-17T03:15:08.939542" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:08.938512" elapsed="0.001060"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:08.939774" elapsed="0.000463"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:08.940548" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:08.940668" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:08.940430" elapsed="0.000268"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:08.940860" elapsed="0.003140"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:08.944554" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:08.945865" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:08.944197" elapsed="0.002127">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:08.949924" elapsed="0.000470"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:08.950584" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:08.950944" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:08.947307" elapsed="0.003818"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:08.946677" elapsed="0.004499"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:08.930850" elapsed="0.020503">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:09.970233" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:09.970065" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:09.970031" elapsed="0.000296"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:09.970738" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:09.970859" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:09.970544" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:09.971427" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:09.971058" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:09.971912" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:09.971653" elapsed="0.000306"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:09.972584" elapsed="0.000190"/>
</kw>
<msg time="2026-04-17T03:15:09.972876" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:09.972923" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:09.972158" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:09.973810" elapsed="0.000140"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:09.974680" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:09.974488" elapsed="0.000744">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:09.974146" elapsed="0.001153"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:09.975906" elapsed="0.000100"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:09.975559" elapsed="0.000493"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:09.973283" elapsed="0.002832"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:09.973023" elapsed="0.003143"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:09.973003" elapsed="0.003188"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:09.976976" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:09.976705" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:09.977051" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:15:09.977229" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:09.976419" elapsed="0.000835"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:09.977423" elapsed="0.000412"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:09.978140" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:09.978243" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:09.978017" elapsed="0.000253"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:09.978428" elapsed="0.002606"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:09.981493" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:09.982642" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:09.981225" elapsed="0.001793">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:09.986331" elapsed="0.000363"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:09.986868" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:09.987191" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:09.983961" elapsed="0.003380"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:09.983332" elapsed="0.004055"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:09.969567" elapsed="0.017944">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.008028" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:11.007869" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.007837" elapsed="0.000309"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.008576" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:11.008699" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.008379" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.009256" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:11.008899" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.009724" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:11.009471" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.010440" elapsed="0.000195"/>
</kw>
<msg time="2026-04-17T03:15:11.010741" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:11.010787" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.009951" elapsed="0.000858"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:11.011672" elapsed="0.000139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.012533" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.012349" elapsed="0.000730">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.011986" elapsed="0.001178"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.013684" elapsed="0.000101"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.013345" elapsed="0.000485"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:11.011139" elapsed="0.002735"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:11.010885" elapsed="0.003037"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.010866" elapsed="0.003081"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:11.014834" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.014553" elapsed="0.000308"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:11.014916" elapsed="0.000044"/>
</return>
<msg time="2026-04-17T03:15:11.015115" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:11.014210" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.015315" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.016028" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:11.016146" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.015920" elapsed="0.000331"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.016416" elapsed="0.002738"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.019609" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:11.020899" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.019335" elapsed="0.002052">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.024833" elapsed="0.000420"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.025434" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.025755" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:11.022372" elapsed="0.003538"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:11.021744" elapsed="0.004213"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.007375" elapsed="0.018670">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:11.026176" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:15:07.877242" elapsed="3.149034">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:07.876839" elapsed="3.149507"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:07.876681" elapsed="3.149707"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:15:07.876511" elapsed="3.149915"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:15:07.466663" elapsed="3.559824"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.029418" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:11.029295" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.029273" elapsed="0.000218"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.034852" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:11.034711" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.034683" elapsed="0.000254"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.036217" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:11.035712" elapsed="0.000538"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.036835" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:11.036470" elapsed="0.000396"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:11.036921" elapsed="0.000040"/>
</return>
<msg time="2026-04-17T03:15:11.037132" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:11.035270" elapsed="0.001893"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.045118" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:11.044953" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.044777" elapsed="0.000435"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.047256" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:11.047035" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.046957" elapsed="0.000395"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:11.048008" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.047586" elapsed="0.000570"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.048679" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:11.048391" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.050171" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.049593" elapsed="0.001587">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:11.051356" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:11.051412" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.048933" elapsed="0.002508"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.052815" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.052329" elapsed="0.001484">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:11.053981" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:11.054036" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.051675" elapsed="0.002390"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.055430" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/bgp_app_peer_prefixcount.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.054525" elapsed="0.001002">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/bgp_app_peer_prefixcount.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:11.054192" elapsed="0.001503">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/bgp_app_peer_prefixcount.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:11.054161" elapsed="0.001579">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/bgp_app_peer_prefixcount.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:11.055968" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:11.056294" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:11.056075" elapsed="0.000396"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:11.056053" elapsed="0.000452"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.056551" elapsed="0.000021"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.059264" elapsed="0.000564"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.060288" elapsed="0.000381"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.061083" elapsed="0.000307"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:11.058142" elapsed="0.003357"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:11.056979" elapsed="0.004683"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.046314" elapsed="0.015475">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/bgp_app_peer_prefixcount.robot"</status>
</kw>
<msg time="2026-04-17T03:15:11.061926" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:11.061980" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/bgp_app_peer_prefixcount.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.045441" elapsed="0.016569"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.062284" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:11.062137" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.062088" elapsed="0.000282"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.063589" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:11.063458" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.063432" elapsed="0.000240"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.064397" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:11.064611" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.063886" elapsed="0.000759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.065219" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:11.064866" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.065794" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:11.065490" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.066572" elapsed="0.000366"/>
</kw>
<msg time="2026-04-17T03:15:11.067058" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:11.067232" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.066065" elapsed="0.001198"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:11.068670" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.070592" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.070268" elapsed="0.001126">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.069301" elapsed="0.002206"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.072717" elapsed="0.000228"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.071821" elapsed="0.001212"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:11.067659" elapsed="0.005491"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:11.067358" elapsed="0.005858"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.067335" elapsed="0.005912"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:11.074443" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.073881" elapsed="0.000596"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:11.074537" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:15:11.074725" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:11.073525" elapsed="0.001229"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.074986" elapsed="0.000532"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.075880" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:11.076004" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.075750" elapsed="0.000287"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.076264" elapsed="0.003485"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.080334" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:11.081741" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.079981" elapsed="0.002321">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.087644" elapsed="0.000868"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.088855" elapsed="0.000548"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:11.089692" elapsed="0.000219"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:11.083637" elapsed="0.006375"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:11.082725" elapsed="0.007351"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.062989" elapsed="0.027322">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:11.090849" elapsed="0.000034"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:11.090970" elapsed="0.000029"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:11.044399" elapsed="0.046750">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:11.091299" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:11.091355" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.037646" elapsed="0.053738"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:11.091847" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:11.091494" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:11.091467" elapsed="0.000477"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:11.037447" elapsed="0.054529"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:11.037231" elapsed="0.054788"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:11.034320" elapsed="0.057793"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:15:11.027249" elapsed="0.064938"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:11.026753" elapsed="0.065489"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:15:07.458729" elapsed="3.633577"/>
</kw>
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:11.100909" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x785440124a10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:11.100222" elapsed="0.000939"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:15:11.099405" elapsed="0.001867"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:11.103234" elapsed="0.000056"/>
</return>
<msg time="2026-04-17T03:15:11.103585" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:11.102882" elapsed="0.000745"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.110260" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:11.103903" elapsed="0.006414"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:11.110820" elapsed="0.000038"/>
</return>
<msg time="2026-04-17T03:15:11.111072" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:11.110599" elapsed="0.000520"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.116045" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:11.111312" elapsed="0.004803"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:11.102465" elapsed="0.013714"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:15:11.102014" elapsed="0.014214"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:11.101602" elapsed="0.014674"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="PASS" start="2026-04-17T03:15:11.116443" elapsed="0.000216"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:11.117234" level="INFO">Creating Session using : alias=operational, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543beffc90&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=125</arg>
<arg>max_retries=0</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:11.116845" elapsed="0.000526"/>
</kw>
<kw name="Open_BGP_Peer_Console">
<kw name="Open Connection" owner="SSHLibrary">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>alias=bgp_peer_console</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.117801" elapsed="0.000361"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.120382" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:11.120466" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:11.119770" elapsed="0.000721"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.120685" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.122053" level="INFO">Logging into '10.30.171.117:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:11.752245" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:11 UTC 2026

  System load:  0.05               Processes:             107
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.117
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:13:03 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:11.121714" elapsed="0.630721"/>
</kw>
<msg time="2026-04-17T03:15:11.752538" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.121273" elapsed="0.631363"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:11.119273" elapsed="0.633496"/>
</kw>
<msg time="2026-04-17T03:15:11.752830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.118764" elapsed="0.634115"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-17T03:15:11.118387" elapsed="0.634575"/>
</kw>
<doc>Create a session for BGP peer.</doc>
<status status="PASS" start="2026-04-17T03:15:11.117540" elapsed="0.635481"/>
</kw>
<kw name="Open_BGP_Aplicationp_Peer_Console">
<kw name="Open Connection" owner="SSHLibrary">
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>alias=bgp_app_peer_console</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:11.753672" elapsed="0.000322"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:11.756035" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:11.756139" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:11.755728" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.756336" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:11.757579" level="INFO">Logging into '10.30.171.117:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:12.069590" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:11 UTC 2026

  System load:  0.05               Processes:             107
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.117
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:11 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:11.757256" elapsed="0.312481"/>
</kw>
<msg time="2026-04-17T03:15:12.069817" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.756869" elapsed="0.313024"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:11.755230" elapsed="0.314770"/>
</kw>
<msg time="2026-04-17T03:15:12.070050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:11.754609" elapsed="0.315502"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-17T03:15:11.754233" elapsed="0.315961"/>
</kw>
<doc>Create a session for BGP peer.</doc>
<status status="PASS" start="2026-04-17T03:15:11.753292" elapsed="0.316955"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.071790" level="INFO">Executing command 'python3 --help'.</msg>
<msg time="2026-04-17T03:15:12.083921" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:15:12.084224" level="INFO">${stdout} = usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_ins...</msg>
<msg time="2026-04-17T03:15:12.084328" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:15:12.084416" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:12.071584" elapsed="0.012882"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.086497" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:15:12.085848" elapsed="0.000775"/>
</kw>
<msg time="2026-04-17T03:15:12.086847" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:15:12.086946" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:12.084953" elapsed="0.002043"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.088616" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:12.087437" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.089802" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:12.088991" elapsed="0.000902"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.088853" elapsed="0.001076"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:15:12.090166" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-17T03:15:12.090005" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.089983" elapsed="0.000301"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:15:12.090403" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:12.090356" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:12.090336" elapsed="0.000149"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.090713" elapsed="0.000031"/>
</kw>
<msg time="2026-04-17T03:15:12.090923" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>python3 --help</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:15:12.071215" elapsed="0.019744"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:15:12.091205" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-17T03:15:12.091052" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.091029" elapsed="0.000282"/>
</if>
<kw name="Fatal Error" owner="BuiltIn">
<arg>Python 3 is not installed!</arg>
<doc>Stops the whole test execution.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.091519" elapsed="0.000028"/>
</kw>
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="PASS" start="2026-04-17T03:15:12.070629" elapsed="0.020995"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.093442" level="INFO">Executing command 'bash -c 'cd "." &amp;&amp; python -c "import ipaddr"''.</msg>
<msg time="2026-04-17T03:15:12.153609" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:15:12.153885" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:12.153986" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:15:12.154075" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:12.093185" elapsed="0.060989"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.156062" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:15:12.155453" elapsed="0.000752"/>
</kw>
<msg time="2026-04-17T03:15:12.156418" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:15:12.156514" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:12.154609" elapsed="0.001956"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.157990" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:12.156965" elapsed="0.001084"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.159042" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:12.158260" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.158215" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:15:12.159614" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-17T03:15:12.159399" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.159364" elapsed="0.000435"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:15:12.159991" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:12.159915" elapsed="0.000161"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:12.159883" elapsed="0.000277"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.160623" elapsed="0.000051"/>
</kw>
<msg time="2026-04-17T03:15:12.160962" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>bash -c 'cd "${target_dir}" &amp;&amp; python -c "import ipaddr"'</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:15:12.092597" elapsed="0.068420"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:15:12.161493" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-17T03:15:12.161209" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.161168" elapsed="0.000503"/>
</if>
<kw name="Put File" owner="SSHLibrary">
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py</arg>
<arg>${target_dir}/</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.161864" elapsed="0.000021"/>
</kw>
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="PASS" start="2026-04-17T03:15:12.091974" elapsed="0.069980"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.206444" level="INFO">[chan 3] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-17T03:15:12.221893" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py' -&gt; '/home/jenkins//play.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:15:12.162132" elapsed="0.059856"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.228901" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/bgp_app_peer.py' -&gt; '/home/jenkins//bgp_app_peer.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/bgp_app_peer.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:15:12.222278" elapsed="0.006706"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.238813" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/ipv4-routes-template.xml.oxygen' -&gt; '/home/jenkins//ipv4-routes-template.xml.oxygen'</msg>
<msg time="2026-04-17T03:15:12.238875" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/ipv4-routes-template.xml' -&gt; '/home/jenkins//ipv4-routes-template.xml'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/ipv4-routes-template.xml*</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:15:12.229255" elapsed="0.009686"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.239822" level="INFO">${timeout} = 1640.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER} * ${COUNT_APP_PEER_PREFIX_COUNT} * 3.0 / 10000 + 20</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:12.239218" elapsed="0.000643"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.247583" level="INFO">${bgp_filling_timeout} = 1640.0</msg>
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:12.240137" elapsed="0.007517"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.255618" level="INFO">${bgp_emptying_timeout} = 1230.0</msg>
<arg>${bgp_emptying_timeout}</arg>
<arg>${bgp_filling_timeout*3.0/4}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:12.247907" elapsed="0.007759"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.256259" level="INFO">${result} = 80000</msg>
<var>${result}</var>
<arg>str(int(${COUNT_APP_PEER_PREFIX_COUNT}) - int(${PREFILL}))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:12.255843" elapsed="0.000444"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.261454" level="INFO">${remaining_prefixes} = 80000</msg>
<arg>${remaining_prefixes}</arg>
<arg>${result}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:12.256462" elapsed="0.005040"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:12.263951" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:12.263833" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.263810" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:12.264425" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:12.264197" elapsed="0.000254"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.264793" level="INFO">${current_connection_index} = 16</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:12.264617" elapsed="0.000201"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.265560" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:12.265352" elapsed="0.000836">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:12.266303" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:12.266349" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:12.264985" elapsed="0.001387"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.267081" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:12.266899" elapsed="0.000692">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:12.267750" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:12.267795" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:12.266548" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.268457" level="FAIL">Failed to send the command: log:set INFO</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:12.268139" elapsed="0.000378">Failed to send the command: log:set INFO</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:12.267894" elapsed="0.000689">Failed to send the command: log:set INFO</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:12.267874" elapsed="0.000741">Failed to send the command: log:set INFO</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.268786" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.269016" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:12.268869" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:12.268852" elapsed="0.000240"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:12.269139" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:12.271036" elapsed="0.000160"/>
</kw>
<msg time="2026-04-17T03:15:12.271239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.270361" elapsed="0.000940"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.271465" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.271633" elapsed="0.000020"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:12.270008" elapsed="0.001707"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:12.269449" elapsed="0.002315"/>
</kw>
<arg>log:set ${ODL_LOG_LEVEL}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:12.261945" elapsed="0.009897">Failed to send the command: log:set INFO</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<arg>log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.bgpcep</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.272400" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<arg>log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.protocol</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.272767" elapsed="0.000025"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${script_uri_opt}</var>
<arg>--uri data/bgp-rib:application-rib=${BGP_APP_PEER_ID}/tables=bgp-types%3Aipv4-address-family,bgp-types%3Aunicast-subsequent-address-family</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.272971" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${script_uri_opt}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.273175" elapsed="0.000021"/>
</kw>
<doc>Setup imported resources, SSH-login to tools system,
create HTTP session, put Python tool to tools system.</doc>
<status status="FAIL" start="2026-04-17T03:15:07.458159" elapsed="4.815133">Failed to send the command: log:set INFO</status>
</kw>
<test id="s1-s4-t1" name="Check_For_Empty_Ipv4_Topology_Before_Starting" line="86">
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.273376" elapsed="0.000663">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t2" name="Reconfigure_ODL_To_Accept_Connection" line="90">
<doc>Configure BGP peer module with initiate-connection set to false.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.274263" elapsed="0.000395">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t3" name="Reconfigure_ODL_To_Accept_BGP_Application_Peer" line="105">
<doc>Configure BGP application peer module.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.274828" elapsed="0.000464">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t4" name="Connect_BGP_Peer" line="115">
<doc>Start BGP peer tool</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.275552" elapsed="0.000340">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t5" name="BGP_Application_Peer_Prefill_Routes" line="121">
<doc>Start BGP application peer tool and prefill routes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.276162" elapsed="0.000414">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t6" name="Wait_For_Ipv4_Topology_Is_Prefilled" line="128">
<doc>Wait until example-ipv4-topology reaches the target prfix count.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.278079" elapsed="0.001553">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t7" name="Check_Bgp_Peer_Updates_For_Prefilled_Routes" line="136">
<doc>Count the routes introduced by updates.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.280577" elapsed="0.000917">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t8" name="BGP_Application_Peer_Introduce_Single_Routes" line="147">
<doc>Start BGP application peer tool and introduce routes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.281883" elapsed="0.000956">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t9" name="Wait_For_Ipv4_Topology_Is_Filled" line="156">
<doc>Wait until example-ipv4-topology reaches the target prfix count.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.283198" elapsed="0.000649">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t10" name="Check_Bgp_Peer_Updates_For_All_Routes" line="164">
<doc>Count the routes introduced by updates.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.284143" elapsed="0.000528">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t11" name="Disconnect_BGP_Peer" line="174">
<doc>Stop BGP peer tool</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.284911" elapsed="0.000457">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t12" name="Reconnect_BGP_Peer" line="180">
<doc>Start BGP peer tool</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.285604" elapsed="0.000482">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t13" name="Check_Bgp_Peer_Updates_For_Reintroduced_Routes" line="186">
<doc>Count the routes introduced by updates.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.286378" elapsed="0.000560">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t14" name="BGP_Application_Peer_Delete_All_Routes" line="196">
<doc>Start BGP application peer tool and delete all routes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.287204" elapsed="0.000580">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t15" name="Wait_For_Stable_Topology_After_Deletion" line="205">
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.288035" elapsed="0.000583">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t16" name="Check_For_Empty_Ipv4_Topology_After_Deleting" line="213">
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.288856" elapsed="0.000572">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t17" name="Check_Bgp_Peer_Updates_For_Prefix_Withdrawals" line="217">
<doc>Count the routes withdrawn by updates.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.289668" elapsed="0.000610">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t18" name="Stop_BGP_Peer" line="227">
<doc>Stop BGP peer tool</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.290518" elapsed="0.000366">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t19" name="Delete_Bgp_Peer_Configuration" line="233">
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.291054" elapsed="0.000439">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s4-t20" name="Delete_Bgp_Application_Peer_Configuration" line="242">
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:12.291666" elapsed="0.000454">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>bgp_peer_console</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:12.293053" elapsed="0.000177"/>
</kw>
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.294350" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:15:12.317496" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:12.317765" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:12.294183" elapsed="0.023636"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:15:12.317948" elapsed="0.000096"/>
</return>
<msg time="2026-04-17T03:15:12.318419" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:15:12.293816" elapsed="0.024660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.320371" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:12.318895" elapsed="0.001573"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.322576" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:12.322723" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:12.321876" elapsed="0.000882"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:15:12.323064" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-17T03:15:12.322874" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.322843" elapsed="0.000399"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.323490" elapsed="0.000032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.323758" elapsed="0.000029"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.324017" elapsed="0.000029"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:15:12.321082" elapsed="0.003086"/>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:15:12.293467" elapsed="0.030776"/>
</kw>
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.325621" level="INFO">Executing command 'ps -elf | egrep python | egrep 'bgp_app_peer.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:15:12.375405" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:12.375673" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:12.325420" elapsed="0.050312"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:15:12.375981" elapsed="0.000086"/>
</return>
<msg time="2026-04-17T03:15:12.376432" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:15:12.324990" elapsed="0.051502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.377769" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:12.377070" elapsed="0.000796"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.379906" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:12.380012" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:12.379389" elapsed="0.000656"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:15:12.380348" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-17T03:15:12.380174" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.380145" elapsed="0.000314"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.380682" elapsed="0.000031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.380934" elapsed="0.000027"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.381198" elapsed="0.000029"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:15:12.378590" elapsed="0.002727"/>
</kw>
<arg>'bgp_app_peer\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:15:12.324558" elapsed="0.056830"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Sysstat_Statistics" owner="Utils">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.382876" level="INFO">index=15
host=10.30.171.117
alias=bgp_peer_console
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:12.383018" level="INFO">${current_connection} = index=15
host=10.30.171.117
alias=bgp_peer_console
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=st...</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:12.382699" elapsed="0.000356"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.384482" level="INFO">${odl_connection} = 17</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:12.383887" elapsed="0.000634"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.388810" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:12.388909" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:12.388532" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.389170" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.390394" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:12.714376" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:07 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:12.390052" elapsed="0.324482"/>
</kw>
<msg time="2026-04-17T03:15:12.714618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.389687" elapsed="0.325025"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:12.385903" elapsed="0.328924"/>
</kw>
<msg time="2026-04-17T03:15:12.714879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.385337" elapsed="0.329600"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:12.384790" elapsed="0.330221"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-17T03:15:12.715062" elapsed="0.000065"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.179 and return its identifier.</doc>
<status status="PASS" start="2026-04-17T03:15:12.383441" elapsed="0.331820"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.716949" level="INFO">sar -A -f /var/log/sa/sa*</msg>
<arg>sar -A -f /var/log/sa/sa*</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-17T03:15:12.715565" elapsed="0.001441"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.719474" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<msg time="2026-04-17T03:15:12.719574" level="INFO">${output} = [?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<var>${output}</var>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:15:12.717198" elapsed="0.002403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.720075" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:12.719771" elapsed="0.000377"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:12.720310" elapsed="0.000170"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:12.720523" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:12.724224" elapsed="0.000143"/>
</kw>
<msg time="2026-04-17T03:15:12.724445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.723679" elapsed="0.000826"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.724677" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.724848" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:12.720881" elapsed="0.004048"/>
</kw>
<doc>Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
that node was running. Used for debug purposes. Returns whole output of sysstat.</doc>
<status status="PASS" start="2026-04-17T03:15:12.382266" elapsed="0.342755"/>
</kw>
<arg>Utils.Get_Sysstat_Statistics</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:12.381618" elapsed="0.343450"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:12.725325" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:15:12.725248" elapsed="0.000182"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:15:12.725584" elapsed="0.000419"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:15:12.292691" elapsed="0.433395"/>
</kw>
<doc>BGP performance of ingesting from 1 BGP application peer

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

Test suite performs basic BGP performance test cases for
BGP application peer. BGP application peer introduces routes -
using restconf - in two steps:
1. introduces the 100000 number of routes in one POST request
2. POSTs the rest of routes (up to the 180000 number) one by one
Test suite checks that the prefixes are propagated to
IPv4 topology and announced to BGP peer via updates. Test case
where the BGP peer is disconnected and reconnected and all routes
are deleted by BGP application peer are performed as well.
Brief description how to configure BGP application peer and
how to use restconf application peer interface:
https://wiki.opendaylight.org/view/BGP_LS_PCEP:User_Guide#BGP_Application_Peer
https://wiki.opendaylight.org/view/BGP_LS_PCEP:Programmer_Guide#BGP
http://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html#bgp-peering
http://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html#application-peer-configuration

Reported bugs:
Bug 4689 - Not a reasonable duration of 1M prefix introduction from BGP application peer via restconf
Bug 4791 - BGPSessionImpl: Failed to send message Update logged even all UPDATE mesages received by iBGP peer</doc>
<status status="FAIL" start="2026-04-17T03:15:07.352724" elapsed="5.373440">Suite setup failed:
Failed to send the command: log:set INFO</status>
</suite>
<suite id="s1-s5" name="Manypeers Prefixcount" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_prefixcount.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.816007" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:12.810836" elapsed="0.005233"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:15:12.810556" elapsed="0.005629"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.821446" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:15:12.817536" elapsed="0.003938"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:12.821693" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:12.821565" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.821540" elapsed="0.000229"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.822301" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:12.821928" elapsed="0.000416"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.822816" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:15:12.822507" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:15:12.823624" elapsed="0.000295"/>
</kw>
<msg time="2026-04-17T03:15:12.824018" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:12.824064" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:12.823268" elapsed="0.000819"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.824662" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:12.824288" elapsed="0.000399"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.825713" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:12.825450" elapsed="0.000290"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.826167" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:12.825890" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.826641" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:15:12.826355" elapsed="0.000312"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:12.830086" elapsed="0.000233"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.830813" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:12.830482" elapsed="0.000357"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:12.830993" elapsed="0.000252"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.832042" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:12.831743" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:15:12.832131" elapsed="0.000038"/>
</return>
<msg time="2026-04-17T03:15:12.832293" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:12.831445" elapsed="0.000873"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:12.832901" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543be06b50&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:12.832477" elapsed="0.000572"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:12.833227" elapsed="0.000192"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:15:12.829522" elapsed="0.003956"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:12.829323" elapsed="0.004200"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:15:12.826727" elapsed="0.006830"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.834146" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:12.833725" elapsed="0.000465"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.834755" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:12.834356" elapsed="0.000441"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.835366" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:12.834963" elapsed="0.000445"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:12.824977" elapsed="0.010487"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:15:12.817153" elapsed="0.018366"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:12.835696" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:12.835584" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.835565" elapsed="0.000196"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.838853" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:12.838471" elapsed="0.000460"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.839430" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:12.839122" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:12.839502" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:15:12.839665" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:12.838138" elapsed="0.001552"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:12.840729" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:12.840457" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.841632" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:12.841734" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:12.841469" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:12.845426" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:12.844785" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:12.844764" elapsed="0.000788"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.846215" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:12.846450" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:12.845754" elapsed="0.000748"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.847458" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:12.846769" elapsed="0.000794"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.848728" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:12.847834" elapsed="0.000945"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:12.850494" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:12.850666" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:12.850136" elapsed="0.000571"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.851042" elapsed="0.000466"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:12.852638" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:13.175696" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:12 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:12.852315" elapsed="0.323546"/>
</kw>
<msg time="2026-04-17T03:15:13.175948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.851853" elapsed="0.324294"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:12.849255" elapsed="0.327051"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:13.177531" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:15:13.190743" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:15:13.191018" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:13.191214" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:13.176707" elapsed="0.014585"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:13.191792" elapsed="0.000869"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:13.194652" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:13.193757" elapsed="0.001124"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:13.195551" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:13.195163" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:13.195121" elapsed="0.000692"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:15:13.196371" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-17T03:15:13.195934" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:13.195907" elapsed="0.000790"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:13.196808" elapsed="0.000025"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:13.202814" elapsed="0.000788"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:13.203956" elapsed="0.000331"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:13.204556" elapsed="0.000247"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:13.197689" elapsed="0.007187"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:15:12.843827" elapsed="0.361227"/>
</kw>
<msg time="2026-04-17T03:15:13.205282" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.842950" elapsed="0.362397"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:12.842465" elapsed="0.362968"/>
</kw>
<msg time="2026-04-17T03:15:13.205474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:12.841921" elapsed="0.363600"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:13.208356" elapsed="0.000318"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:13.208852" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:13.209215" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:13.205848" elapsed="0.003518"/>
</kw>
<msg time="2026-04-17T03:15:13.209461" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:15:12.841048" elapsed="0.368439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:13.209964" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:13.209689" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:13.210048" elapsed="0.000031"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:15:12.840072" elapsed="0.370125"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:12.839879" elapsed="0.370355"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:12.839744" elapsed="0.370527"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:15:12.835982" elapsed="0.374347"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:15:13.210491" elapsed="0.000213"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:13.224583" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:13.224460" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:13.224433" elapsed="0.000221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:13.224964" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:13.225070" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:13.224815" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:13.225539" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:13.225277" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:13.226007" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:13.225735" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:13.226842" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:15:13.226611" elapsed="0.000374">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:15:13.227110" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:13.227158" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:13.226235" elapsed="0.000946"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:13.227482" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:13.227256" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:13.227237" elapsed="0.000341"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:13.228340" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:13.228054" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:13.228412" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:15:13.228563" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:13.227781" elapsed="0.000806"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:13.228746" elapsed="0.000424"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:13.229447" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:13.229545" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:13.229342" elapsed="0.000228"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:13.229719" elapsed="0.002475"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:13.232623" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:13.234117" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:13.232361" elapsed="0.002191">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:13.237678" elapsed="0.000356"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:13.238225" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:13.238527" elapsed="0.000098"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:13.235484" elapsed="0.003191"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:13.234850" elapsed="0.003869"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:13.224152" elapsed="0.014652">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:14.257388" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:14.257243" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:14.257216" elapsed="0.000258"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:14.257847" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:14.257965" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:14.257665" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:14.258480" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:14.258173" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:14.258934" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:14.258685" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:14.259591" elapsed="0.000274"/>
</kw>
<msg time="2026-04-17T03:15:14.260019" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:14.260088" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:14.259165" elapsed="0.000980"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:14.261182" elapsed="0.000138"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:14.261989" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:14.261817" elapsed="0.000704">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:14.261487" elapsed="0.001097"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:14.263105" elapsed="0.000103"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:14.262755" elapsed="0.000499"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:14.260596" elapsed="0.002701"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:14.260258" elapsed="0.003087"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:14.260230" elapsed="0.003140"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:14.264177" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:14.263891" elapsed="0.000313"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:14.264251" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:15:14.264407" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:14.263582" elapsed="0.000849"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:14.264588" elapsed="0.000402"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:14.265283" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:14.265382" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:14.265177" elapsed="0.000230"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:14.265556" elapsed="0.002520"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:14.268538" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:14.270044" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:14.268268" elapsed="0.002255">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:14.273632" elapsed="0.000383"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:14.274201" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:14.274557" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:14.271355" elapsed="0.003349"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:14.270809" elapsed="0.003940"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:14.256815" elapsed="0.018035">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:15.294126" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:15.293956" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:15.293926" elapsed="0.000286"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:15.294616" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:15.294735" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:15.294428" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:15.295263" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:15.294930" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:15.295710" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:15.295464" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:15.296375" elapsed="0.000186"/>
</kw>
<msg time="2026-04-17T03:15:15.296660" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:15.296705" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:15.295943" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:15.297699" elapsed="0.000146"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:15.298542" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:15.298365" elapsed="0.000764">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:15.298013" elapsed="0.001180"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:15.299698" elapsed="0.000100"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:15.299367" elapsed="0.000477"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:15.297119" elapsed="0.002768"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:15.296802" elapsed="0.003171"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:15.296783" elapsed="0.003218"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:15.300799" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:15.300531" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:15.300879" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:15:15.301037" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:15.300248" elapsed="0.000813"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:15.301236" elapsed="0.000433"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:15.301949" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:15.302049" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:15.301843" elapsed="0.000232"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:15.302244" elapsed="0.002480"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:15.305345" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:15.306791" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:15.305002" elapsed="0.002213">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:15.311042" elapsed="0.000388"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:15.311600" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:15.311906" elapsed="0.000134"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:15.308351" elapsed="0.003772"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:15.307528" elapsed="0.004650"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:15.293489" elapsed="0.018781">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.330153" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.329993" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.329967" elapsed="0.000271"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.330626" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:16.330744" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.330426" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.331258" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:16.330934" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.331783" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:16.331497" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.332406" elapsed="0.000211"/>
</kw>
<msg time="2026-04-17T03:15:16.332722" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:16.332783" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.331995" elapsed="0.000819"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:16.333907" elapsed="0.000169"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.334773" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.334601" elapsed="0.000705">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.334265" elapsed="0.001105"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.335931" elapsed="0.000105"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.335541" elapsed="0.000542"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:16.333211" elapsed="0.002935"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:16.332915" elapsed="0.003279"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.332889" elapsed="0.003331"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:16.337006" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.336740" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:16.337079" elapsed="0.000051"/>
</return>
<msg time="2026-04-17T03:15:16.337254" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:16.336457" elapsed="0.000821"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.337505" elapsed="0.000406"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.338207" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:16.338306" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.338082" elapsed="0.000250"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.338481" elapsed="0.002484"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.341415" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:16.342844" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.341150" elapsed="0.002092">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:16.346329" elapsed="0.000387"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.346882" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.347196" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:16.344075" elapsed="0.003267"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:16.343526" elapsed="0.003860"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.329586" elapsed="0.017885">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:16.347560" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:15:13.211491" elapsed="3.136160">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:13.211117" elapsed="3.136599"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:13.210957" elapsed="3.136834"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:15:13.210762" elapsed="3.137066"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:15:12.816560" elapsed="3.531327"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.350547" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.350417" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.350394" elapsed="0.000221"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.355459" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.355355" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.355336" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.356532" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:16.356146" elapsed="0.000412"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.357016" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:16.356721" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:16.357085" elapsed="0.000050"/>
</return>
<msg time="2026-04-17T03:15:16.357262" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:16.355753" elapsed="0.001534"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.362974" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.362866" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.362847" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.364310" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.364163" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.364139" elapsed="0.000238"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:16.364862" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.364524" elapsed="0.000370"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.365327" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:16.365079" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.366445" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.366004" elapsed="0.001135">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:16.367279" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:16.367324" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.365515" elapsed="0.001831"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.368489" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.368074" elapsed="0.001203">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:16.369412" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:16.369456" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.367516" elapsed="0.001963"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.370510" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_prefixcount.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.369794" elapsed="0.000797">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_prefixcount.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:16.369553" elapsed="0.001170">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_prefixcount.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:16.369534" elapsed="0.001223">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_prefixcount.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:16.370922" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:16.371164" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:16.371004" elapsed="0.000306"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:16.370988" elapsed="0.000347"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.371367" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:16.373463" elapsed="0.000440"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.374264" elapsed="0.000279"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.374865" elapsed="0.000256"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:16.372638" elapsed="0.002574"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:16.371625" elapsed="0.003719"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.363845" elapsed="0.011587">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_prefixcount.robot"</status>
</kw>
<msg time="2026-04-17T03:15:16.375533" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:16.375576" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_prefixcount.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.363212" elapsed="0.012388"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.375815" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.375708" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.375688" elapsed="0.000243"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.376690" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.376588" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.376571" elapsed="0.000185"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.377288" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:16.377394" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.376912" elapsed="0.000509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.377832" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:16.377575" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.378291" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:16.378031" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.378846" elapsed="0.000291"/>
</kw>
<msg time="2026-04-17T03:15:16.379233" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:16.379279" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.378492" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:16.380424" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.381991" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.381742" elapsed="0.000703">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.380909" elapsed="0.001626"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.383506" elapsed="0.000189"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.382778" elapsed="0.000987"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:16.379595" elapsed="0.004249"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:16.379375" elapsed="0.004536"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.379356" elapsed="0.004580"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:16.384868" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.384429" elapsed="0.000466"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:16.384941" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:16.385180" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:16.384155" elapsed="0.001053"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.385364" elapsed="0.000392"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.386026" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:16.386141" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.385923" elapsed="0.000244"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.386315" elapsed="0.002306"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.389044" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:16.390150" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.388787" elapsed="0.001760">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:16.395285" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.396288" elapsed="0.000439"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:16.396978" elapsed="0.000259"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:16.391351" elapsed="0.005979"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:16.390822" elapsed="0.006562"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.376348" elapsed="0.021148">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:16.397939" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.398015" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.362515" elapsed="0.035642">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:16.398265" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:16.398308" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.357662" elapsed="0.040668"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:16.398662" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:16.398406" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.398387" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:16.357517" elapsed="0.041245"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:16.357341" elapsed="0.041451"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:16.354896" elapsed="0.043949"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:15:16.348508" elapsed="0.050389"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.348048" elapsed="0.050889"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:15:12.810172" elapsed="3.588810"/>
</kw>
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:16.403151" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854401a6550&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:16.402766" elapsed="0.000515"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:15:16.402357" elapsed="0.000992"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:16.404521" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:16.404729" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:16.404343" elapsed="0.000411"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.409313" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:16.404921" elapsed="0.004438"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:16.409733" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:16.409941" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:16.409546" elapsed="0.000421"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.414472" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:16.410150" elapsed="0.004369"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:16.404090" elapsed="0.010488"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:15:16.403790" elapsed="0.010832"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:16.403538" elapsed="0.011166"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:16.415205" level="INFO">Creating Session using : alias=operational, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854401c3a90&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=125</arg>
<arg>max_retries=0</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:16.414861" elapsed="0.000448"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="PASS" start="2026-04-17T03:15:16.415478" elapsed="0.000169"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:16.415802" elapsed="0.000212"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.417692" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:16.417790" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:16.417423" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:16.417978" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.419404" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:16.751111" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:13 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:16.418860" elapsed="0.332416"/>
</kw>
<msg time="2026-04-17T03:15:16.751365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:16.418503" elapsed="0.332947"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:16.416964" elapsed="0.334606"/>
</kw>
<msg time="2026-04-17T03:15:16.751622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:16.416567" elapsed="0.335101"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:16.416232" elapsed="0.335514"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.753244" level="INFO">Executing command 'python3 --help'.</msg>
<msg time="2026-04-17T03:15:16.765856" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:15:16.766147" level="INFO">${stdout} = usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_ins...</msg>
<msg time="2026-04-17T03:15:16.766252" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:15:16.766341" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:16.752987" elapsed="0.013403"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.768247" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:15:16.767630" elapsed="0.000715"/>
</kw>
<msg time="2026-04-17T03:15:16.768548" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:15:16.768642" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.766793" elapsed="0.001898"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.770159" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:16.769087" elapsed="0.001133"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:15:16.771244" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:16.770404" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.770356" elapsed="0.001092"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:15:16.771796" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-17T03:15:16.771571" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.771536" elapsed="0.000451"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.772221" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.772138" elapsed="0.000280"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:16.772072" elapsed="0.000403"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:16.772806" elapsed="0.000048"/>
</kw>
<msg time="2026-04-17T03:15:16.773174" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>python3 --help</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:15:16.752622" elapsed="0.020664"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:15:16.773660" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-17T03:15:16.773445" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.773406" elapsed="0.000437"/>
</if>
<kw name="Fatal Error" owner="BuiltIn">
<arg>Python 3 is not installed!</arg>
<doc>Stops the whole test execution.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:16.774010" elapsed="0.000023"/>
</kw>
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="PASS" start="2026-04-17T03:15:16.752157" elapsed="0.021953"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.775397" level="INFO">Executing command 'bash -c 'cd "." &amp;&amp; python -c "import ipaddr"''.</msg>
<msg time="2026-04-17T03:15:16.915869" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:16.916268" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:16.916362" level="INFO">${stderr} = Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'</msg>
<msg time="2026-04-17T03:15:16.916448" level="INFO">${rc} = 1</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:16.775210" elapsed="0.141283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.918950" level="INFO">Length is 119.</msg>
<msg time="2026-04-17T03:15:16.919088" level="FAIL">'Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:15:16.917885" elapsed="0.001344">'Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'' should be empty.</status>
</kw>
<msg time="2026-04-17T03:15:16.919389" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-17T03:15:16.919451" level="INFO">${result} = 'Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'' should be empty.</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:16.916979" elapsed="0.002508"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.920455" level="INFO">${success} = False</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:16.919739" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.922288" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:16.921852" elapsed="0.000499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.922918" level="INFO">Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
ModuleNotFoundError: No module named 'ipaddr'</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:16.922577" elapsed="0.000408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:16.923630" level="INFO">1</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:16.923229" elapsed="0.000463"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-17T03:15:16.921274" elapsed="0.002496"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:16.920616" elapsed="0.003204"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.920582" elapsed="0.003277"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:15:16.924154" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-17T03:15:16.923942" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.923913" elapsed="0.000372"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:15:16.924408" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.924360" elapsed="0.000103"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:16.924339" elapsed="0.000154"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:16.924698" elapsed="0.000030"/>
</kw>
<msg time="2026-04-17T03:15:16.924903" level="INFO">${passed} = False</msg>
<var>${passed}</var>
<arg>bash -c 'cd "${target_dir}" &amp;&amp; python -c "import ipaddr"'</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:15:16.774814" elapsed="0.150123"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:16.925186" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:16.925033" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:16.925008" elapsed="0.000263"/>
</if>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.969381" level="INFO">[chan 3] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-17T03:15:16.984466" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py' -&gt; '/home/jenkins/.//ipaddr.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py</arg>
<arg>${target_dir}/</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:15:16.925478" elapsed="0.059145"/>
</kw>
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="PASS" start="2026-04-17T03:15:16.774370" elapsed="0.210485"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:15:16.999662" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py' -&gt; '/home/jenkins//play.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:15:16.985210" elapsed="0.014580"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:15:17.000473" level="INFO">${period} = 60.0</msg>
<var>${period}</var>
<arg>${CHECK_PERIOD_PREFIX_COUNT_MANY}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:15:17.000066" elapsed="0.000435"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.001238" level="INFO">${timeout} = 2420.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER_PREFIX_COUNT_MANY} * (${COUNT_PREFIX_COUNT_MANY} * 3.0 / 10000 + ${period} * (${REPETITIONS_PREFIX_COUNT_MANY} + 1)) + 20</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:17.000675" elapsed="0.000592"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.006320" level="INFO">${bgp_filling_timeout} = 2420.0</msg>
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:17.001446" elapsed="0.004936"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.007077" level="INFO">${timeout} = 1940.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER_PREFIX_COUNT_MANY} * (${COUNT_PREFIX_COUNT_MANY} * 2.0 / 10000 + ${period} * (${REPETITIONS_PREFIX_COUNT_MANY} + 1)) + 20</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:15:17.006575" elapsed="0.000549"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.011812" level="INFO">${bgp_emptying_timeout} = 1940.0</msg>
<arg>${bgp_emptying_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:17.007297" elapsed="0.004569"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:17.015206" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:17.015006" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.014971" elapsed="0.000330"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:17.015763" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.015486" elapsed="0.000306"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.016183" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:17.015974" elapsed="0.000235"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.017052" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.016806" elapsed="0.000844">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:17.017769" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:17.017822" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:17.016408" elapsed="0.001441"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.018634" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.018444" elapsed="0.000748">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:17.019311" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:17.019375" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:17.018071" elapsed="0.001332"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.020067" level="FAIL">Failed to send the command: log:set INFO</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.019730" elapsed="0.000697">Failed to send the command: log:set INFO</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:17.019489" elapsed="0.001011">Failed to send the command: log:set INFO</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:17.019466" elapsed="0.001067">Failed to send the command: log:set INFO</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.020698" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.020943" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:17.020786" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:17.020768" elapsed="0.000250"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:17.021054" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:17.022901" elapsed="0.000149"/>
</kw>
<msg time="2026-04-17T03:15:17.023119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.022406" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.023435" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.023605" elapsed="0.000021"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:17.022033" elapsed="0.001656"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:17.021405" elapsed="0.002330"/>
</kw>
<arg>log:set ${KARAF_LOG_LEVEL}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.012440" elapsed="0.011386">Failed to send the command: log:set INFO</status>
</kw>
<doc>Setup imported resources, SSH-login to ODL system,
create HTTP session, put Python tool to ODL system.</doc>
<status status="FAIL" start="2026-04-17T03:15:12.809757" elapsed="4.214165">Failed to send the command: log:set INFO</status>
</kw>
<test id="s1-s5-t1" name="Check_For_Empty_Ipv4_Topology_Before_Talking" line="100">
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:17.024002" elapsed="0.000620">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t2" name="Reconfigure_ODL_To_Accept_Connections" line="106">
<doc>Configure BGP peer modules with initiate-connection set to false.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.024814" elapsed="0.000421">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t3" name="Change_Karaf_Logging_Levels" line="126">
<doc>We may want to set more verbose logging here after configuration is done.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.025416" elapsed="0.000385">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t4" name="Start_Talking_BGP_Manager" line="132">
<doc>Start Python manager to connect speakers to ODL.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.026010" elapsed="0.000380">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t5" name="Wait_For_Stable_Talking_Ipv4_Topology" line="138">
<doc>Wait until example-ipv4-topology becomes stable. This is done by checking stability of prefix count.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.026560" elapsed="0.000453">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t6" name="Check_Talking_Ipv4_Topology_Count" line="146">
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:17.027205" elapsed="0.000472">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t7" name="Kill_Talking_BGP_Speakers" line="152">
<doc>Abort the Python speakers. Also, attempt to stop failing fast.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.027904" elapsed="0.000442">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t8" name="Wait_For_Stable_Ipv4_Topology_After_Talking" line="160">
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:17.028526" elapsed="0.000393">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t9" name="Check_For_Empty_Ipv4_Topology_After_Talking" line="172">
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:17.029092" elapsed="0.000391">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t10" name="Restore_Karaf_Logging_Levels" line="178">
<doc>Set logging on bgpcep and protocol to the global value.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.029649" elapsed="0.000402">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s5-t11" name="Delete_Bgp_Peer_Configuration" line="182">
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.030246" elapsed="0.000472">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.032928" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:15:17.056702" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:17.057247" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:17.032750" elapsed="0.024563"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:15:17.057518" elapsed="0.000145"/>
</return>
<msg time="2026-04-17T03:15:17.058046" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:15:17.032412" elapsed="0.025753"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.059618" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:17.058734" elapsed="0.000985"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.063254" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:17.063371" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:17.062630" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:15:17.063748" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-17T03:15:17.063530" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.063497" elapsed="0.000368"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.064137" elapsed="0.000044"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.064473" elapsed="0.000040"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.064820" elapsed="0.000045"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:15:17.060494" elapsed="0.004688"/>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:15:17.032055" elapsed="0.033206"/>
</kw>
<arg>KillPythonTool.Search_And_Kill_Remote_Python</arg>
<arg>'play\.py'</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:17.031573" elapsed="0.033751"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Sysstat_Statistics" owner="Utils">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.067076" level="INFO">index=15
host=10.30.171.179
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:17.067250" level="INFO">${current_connection} = index=15
host=10.30.171.179
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.066856" elapsed="0.000431"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.068869" level="INFO">${odl_connection} = 16</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.068212" elapsed="0.000706"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.071263" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:17.071343" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:17.070967" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.071564" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.072988" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:17.405645" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:16 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:17.072612" elapsed="0.333214"/>
</kw>
<msg time="2026-04-17T03:15:17.405918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.072196" elapsed="0.333822"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:17.070440" elapsed="0.335716"/>
</kw>
<msg time="2026-04-17T03:15:17.406212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.069757" elapsed="0.336516"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:17.069265" elapsed="0.337085"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-17T03:15:17.406402" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.179 and return its identifier.</doc>
<status status="PASS" start="2026-04-17T03:15:17.067649" elapsed="0.338935"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.408455" level="INFO">sar -A -f /var/log/sa/sa*</msg>
<arg>sar -A -f /var/log/sa/sa*</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-17T03:15:17.406827" elapsed="0.001687"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.411054" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<msg time="2026-04-17T03:15:17.411175" level="INFO">${output} = [?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<var>${output}</var>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:15:17.408687" elapsed="0.002533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.411732" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:17.411388" elapsed="0.000396"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.411942" elapsed="0.000177"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:17.412163" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:17.415738" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:15:17.415928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.415183" elapsed="0.000866"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.416237" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.416406" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:17.412533" elapsed="0.003957"/>
</kw>
<doc>Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
that node was running. Used for debug purposes. Returns whole output of sysstat.</doc>
<status status="PASS" start="2026-04-17T03:15:17.066342" elapsed="0.350240"/>
</kw>
<arg>Utils.Get_Sysstat_Statistics</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:17.065565" elapsed="0.351064"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:17.416939" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:15:17.416822" elapsed="0.000253"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:15:17.417317" elapsed="0.000400"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:15:17.031220" elapsed="0.386558"/>
</kw>
<doc>BGP performance of ingesting from many iBGP peers, data change counter NOT used.

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 suite uses play.py processes as iBGP peers.
This is analogue of single peer performance suite, which uses many peers.
Each peer is of ibgp type, and they contribute to the same example-bgp-rib,
and thus to the same single example-ipv4-topology.
The suite only looks at example-ipv4-topology, so RIB is not examined.

The suite consists of two halves, differing on which side initiates BGP connection.
State of "work is being done" is detected by increasing value of prefixes in topology.
The time for Wait_For_Stable_* cases to finish is the main performance metric.
After waiting for stability is done, full check on number of prefixes present is performed.

TODO: Currently, if a bug causes prefix count to remain at zero,
affected test cases will wait for max time. Reconsider.
If zero is allowed as stable, higher period or repetitions would be required.

The prefix counting is quite heavyweight and may induce large variation in time.
Try the other version of the suite (manypeers_changecount.robot) to get better precision.

ODL distinguishes peers by their IP addresses.
Currently, this suite requires python utils to be started on ODL System,
to guarantee IP address block is available for them to bind to.
TODO: Figure out how to use Docker and docker IP pool available in RelEng.

Currently, 127.0.0.1 is hardcoded as the first peer address to use.
TODO: Figure out how to make it configurable.
As peer IP adresses are set incrementally, we need ipaddr to be used in Robot somehow.

Brief description how to configure BGP peer can be found here:
https://wiki.opendaylight.org/view/BGP_LS_PCEP:User_Guide#BGP_Peer
http://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html#bgp-peering

TODO: Is there a need for version of this suite where ODL connects to pers?
Note that configuring ODL is slow, which may affect measured performance singificantly.
Advanced TODO: Give manager ability to start pushing on trigger long after connections are established.</doc>
<status status="FAIL" start="2026-04-17T03:15:12.727007" elapsed="4.690804">Suite setup failed:
Failed to send the command: log:set INFO</status>
</suite>
<suite id="s1-s6" name="Manypeers Changecount" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_changecount.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.512576" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:17.507992" elapsed="0.004641"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:15:17.507692" elapsed="0.005015"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.519516" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:15:17.513903" elapsed="0.005676"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:17.519899" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:17.519721" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.519683" elapsed="0.000317"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.520844" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:17.520285" elapsed="0.000622"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.521664" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:15:17.521199" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:15:17.522513" elapsed="0.000428"/>
</kw>
<msg time="2026-04-17T03:15:17.523084" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:17.523176" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:17.521968" elapsed="0.001242"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.524016" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:17.523478" elapsed="0.000565"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.525284" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:17.524988" elapsed="0.000323"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.525726" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:17.525471" elapsed="0.000281"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.526234" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.525920" elapsed="0.000341"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.529800" elapsed="0.000224"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.530546" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:17.530213" elapsed="0.000359"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.530738" elapsed="0.000232"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.531851" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:17.531508" elapsed="0.000369"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:15:17.531924" elapsed="0.000041"/>
</return>
<msg time="2026-04-17T03:15:17.532088" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:17.531202" elapsed="0.000927"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:17.532732" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543bd1ef90&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:17.532299" elapsed="0.000571"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.533040" elapsed="0.000207"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:15:17.529220" elapsed="0.004086"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:17.528990" elapsed="0.004361"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:15:17.526320" elapsed="0.007063"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.533956" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:17.533556" elapsed="0.000442"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.534583" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:17.534187" elapsed="0.000438"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.535191" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:17.534795" elapsed="0.000438"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:17.524373" elapsed="0.010916"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:15:17.513519" elapsed="0.021824"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:17.535524" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:17.535410" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.535390" elapsed="0.000404"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.539085" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:17.538702" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.539623" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:17.539303" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:17.539694" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:17.539848" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:17.538367" elapsed="0.001505"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:17.540949" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.540680" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.541759" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:17.541860" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.541591" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.545741" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:17.545037" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.545016" elapsed="0.000866"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.546559" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:17.546809" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.546115" elapsed="0.000749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.547910" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:17.547169" elapsed="0.000850"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.549339" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.548325" elapsed="0.001066"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.551206" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:17.551384" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:17.550786" elapsed="0.000643"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.551818" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.553604" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:17.882972" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:17 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:17.553254" elapsed="0.329933"/>
</kw>
<msg time="2026-04-17T03:15:17.883273" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.552683" elapsed="0.330769"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:17.549849" elapsed="0.333770"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.884580" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:15:17.898026" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:15:17.898487" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:17.898733" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:17.884010" elapsed="0.014838"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.899700" elapsed="0.001289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.903003" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:17.902054" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:17.903989" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:17.903596" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.903555" elapsed="0.000708"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:15:17.904805" elapsed="0.000106"/>
</return>
<status status="PASS" start="2026-04-17T03:15:17.904386" elapsed="0.000645"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.904360" elapsed="0.000752"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:17.905208" elapsed="0.000023"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.910343" elapsed="0.000567"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.911382" elapsed="0.000340"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.912005" elapsed="0.000251"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:17.906016" elapsed="0.006313"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:15:17.544035" elapsed="0.368478"/>
</kw>
<msg time="2026-04-17T03:15:17.912584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.543157" elapsed="0.369495"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:17.542649" elapsed="0.370109"/>
</kw>
<msg time="2026-04-17T03:15:17.912800" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.542053" elapsed="0.370794"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.915961" elapsed="0.000392"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.916534" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.916912" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:17.913199" elapsed="0.003865"/>
</kw>
<msg time="2026-04-17T03:15:17.917180" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:15:17.541222" elapsed="0.375984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.917692" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:17.917434" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:17.917781" elapsed="0.000041"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:15:17.540317" elapsed="0.377603"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:17.540124" elapsed="0.377834"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:17.539976" elapsed="0.378018"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:15:17.536111" elapsed="0.381939"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:15:17.918240" elapsed="0.000214"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:17.934631" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:17.934439" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.934406" elapsed="0.000329"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.935226" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:17.935345" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.935016" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.935869" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:17.935556" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:17.936449" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:17.936194" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:17.937402" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.937161" elapsed="0.000355">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:15:17.937635" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:17.937680" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:17.936687" elapsed="0.001016"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:17.938037" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:17.937783" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:17.937763" elapsed="0.000395"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:17.939044" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.938768" elapsed="0.000302"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:17.939145" elapsed="0.000036"/>
</return>
<msg time="2026-04-17T03:15:17.939307" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:17.938432" elapsed="0.000900"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.939503" elapsed="0.000453"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.940283" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:17.940386" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.940163" elapsed="0.000249"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.940591" elapsed="0.004717"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:17.945889" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:17.946906" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.945572" elapsed="0.001861">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:17.951205" elapsed="0.000438"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:17.951868" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:17.952262" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:17.948494" elapsed="0.003928"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:17.947830" elapsed="0.004642"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.933896" elapsed="0.018679">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:18.970891" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:18.970741" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:18.970711" elapsed="0.000289"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:18.971649" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:18.971781" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:18.971414" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:18.972424" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:18.972077" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:18.972915" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:18.972652" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:18.973616" elapsed="0.000194"/>
</kw>
<msg time="2026-04-17T03:15:18.973926" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:18.973977" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:18.973173" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:18.974900" elapsed="0.000146"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:18.975815" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:18.975632" elapsed="0.000732">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:18.975243" elapsed="0.001185"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:18.976976" elapsed="0.000108"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:18.976620" elapsed="0.000527"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:18.974353" elapsed="0.002840"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:18.974086" elapsed="0.003155"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:18.974067" elapsed="0.003199"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:18.978130" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:18.977829" elapsed="0.000335"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:18.978213" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:15:18.978372" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:18.977509" elapsed="0.000888"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:18.978564" elapsed="0.000422"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:18.979315" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:18.979417" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:18.979194" elapsed="0.000249"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:18.979655" elapsed="0.002687"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:18.982792" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:18.984051" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:18.982527" elapsed="0.001951">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:18.987958" elapsed="0.000389"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:18.988525" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:18.988845" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:18.985377" elapsed="0.003617"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:18.984806" elapsed="0.004244"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:18.970289" elapsed="0.018873">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:20.009980" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:20.009834" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:20.009805" elapsed="0.000303"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:20.010542" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:20.010661" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:20.010348" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:20.011191" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:20.010861" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:20.011712" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:20.011449" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:20.012375" elapsed="0.000193"/>
</kw>
<msg time="2026-04-17T03:15:20.012677" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:20.012741" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:20.011942" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:20.013808" elapsed="0.000139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:20.014786" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:20.014563" elapsed="0.000857">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:20.014174" elapsed="0.001314"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:20.016017" elapsed="0.000121"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:20.015673" elapsed="0.000513"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:20.013271" elapsed="0.002959"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:20.012847" elapsed="0.003442"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:20.012827" elapsed="0.003495"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:20.017180" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:20.016874" elapsed="0.000348"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:20.017285" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:15:20.017454" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:20.016562" elapsed="0.000917"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:20.017671" elapsed="0.000482"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:20.018476" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:20.018591" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:20.018356" elapsed="0.000262"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:20.018786" elapsed="0.002761"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:20.022036" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:20.023481" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:20.021742" elapsed="0.002154">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:20.027458" elapsed="0.000393"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:20.028056" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:20.028479" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:20.024878" elapsed="0.003779"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:20.024265" elapsed="0.004440"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:20.009397" elapsed="0.019400">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.047512" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.047373" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.047346" elapsed="0.000250"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.047974" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.048106" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.047793" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.048633" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.048307" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.049120" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.048845" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.049741" elapsed="0.000188"/>
</kw>
<msg time="2026-04-17T03:15:21.050029" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:21.050076" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.049343" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:21.050950" elapsed="0.000137"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.051791" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.051617" elapsed="0.000710">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.051280" elapsed="0.001123"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.052926" elapsed="0.000106"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.052586" elapsed="0.000492"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:21.050429" elapsed="0.002710"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:21.050192" elapsed="0.002996"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.050173" elapsed="0.003039"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:21.054000" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.053729" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:21.054079" elapsed="0.000048"/>
</return>
<msg time="2026-04-17T03:15:21.054252" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.053435" elapsed="0.000842"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.054445" elapsed="0.000407"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.055253" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.055358" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.055116" elapsed="0.000269"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.055546" elapsed="0.002685"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.058750" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:21.060300" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.058476" elapsed="0.002246">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.064004" elapsed="0.000437"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.064621" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.064933" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.061611" elapsed="0.003472"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:21.061036" elapsed="0.004111"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.046968" elapsed="0.018264">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:21.065321" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.919397" elapsed="3.146015">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:17.918859" elapsed="3.146617"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:17.918678" elapsed="3.146839"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:15:17.918512" elapsed="3.147041"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:15:17.513032" elapsed="3.552580"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.068441" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.068303" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.068281" elapsed="0.000229"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.073603" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.073497" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.073479" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.074644" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:21.074261" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.075160" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:21.074841" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:21.075229" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:21.075383" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:21.073905" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.081214" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.081089" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.081071" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.082493" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.082367" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.082349" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:21.083036" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.082715" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.083525" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:21.083298" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.084683" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.084243" elapsed="0.001161">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:21.085542" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:21.085588" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.083721" elapsed="0.001890"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.086720" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.086324" elapsed="0.001172">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:21.087631" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:21.087675" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.085791" elapsed="0.001907"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.088729" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_changecount.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.088023" elapsed="0.000785">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_changecount.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:21.087772" elapsed="0.001169">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_changecount.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:21.087753" elapsed="0.001222">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_changecount.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.089163" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.089404" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:21.089250" elapsed="0.000297"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:21.089233" elapsed="0.000339"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.089605" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.091613" elapsed="0.000448"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.092592" elapsed="0.000307"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.093263" elapsed="0.000235"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.090815" elapsed="0.002773"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:21.089889" elapsed="0.003830"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.082057" elapsed="0.011751">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_changecount.robot"</status>
</kw>
<msg time="2026-04-17T03:15:21.093912" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:21.093956" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/manypeers_changecount.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.081443" elapsed="0.012536"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.094186" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.094055" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.094035" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.095003" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.094901" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.094884" elapsed="0.000184"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.095677" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.095782" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.095370" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.096304" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.096021" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.096811" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.096561" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.097420" elapsed="0.000280"/>
</kw>
<msg time="2026-04-17T03:15:21.097797" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:21.097843" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.097026" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:21.098983" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.100677" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.100380" elapsed="0.000766">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.099568" elapsed="0.001670"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.102232" elapsed="0.000192"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.101495" elapsed="0.000999"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:21.098193" elapsed="0.004380"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:21.097940" elapsed="0.004688"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.097922" elapsed="0.004731"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:21.103680" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.103239" elapsed="0.000467"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:21.103753" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:15:21.103906" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.102872" elapsed="0.001059"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.104109" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.104823" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.104923" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.104717" elapsed="0.000232"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.105121" elapsed="0.002457"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.108050" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:21.109022" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.107753" elapsed="0.001660">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.113257" elapsed="0.000634"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.114169" elapsed="0.000412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.114803" elapsed="0.000181"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.110245" elapsed="0.004821"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:21.109707" elapsed="0.005441"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.094660" elapsed="0.020575">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.115648" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.115724" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.080799" elapsed="0.035032">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:21.115938" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:21.115982" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.075788" elapsed="0.040217"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.116371" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:21.116084" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.116065" elapsed="0.000385"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:21.075634" elapsed="0.040841"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:21.075462" elapsed="0.041071"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:21.073209" elapsed="0.043402"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:15:21.066253" elapsed="0.050439"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.065782" elapsed="0.050955"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:15:17.507280" elapsed="3.609510"/>
</kw>
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:21.121205" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543beb1d10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:21.120760" elapsed="0.000581"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:15:21.120305" elapsed="0.001103"/>
</kw>
<kw name="CC_Setup" owner="ChangeCounter">
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:21.126154" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543bd46c10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:21.125778" elapsed="0.000480"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:15:21.125357" elapsed="0.000968"/>
</kw>
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:21.127342" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:15:21.127556" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:21.127156" elapsed="0.000426"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.132477" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.127759" elapsed="0.004789"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:21.132943" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:21.133175" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:21.132753" elapsed="0.000449"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.138197" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.133379" elapsed="0.004868"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:21.126869" elapsed="0.011437"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:15:21.126526" elapsed="0.011824"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:21.138742" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:21.138946" level="INFO">${counter} = ['Get_Change_Count', [], {}]</msg>
<var>${counter}</var>
<arg>Get_Change_Count</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:21.138559" elapsed="0.000412"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.143831" level="INFO">${ChangeCounter__getter} = ['Get_Change_Count', [], {}]</msg>
<arg>${ChangeCounter__getter}</arg>
<arg>${counter}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.139206" elapsed="0.004671"/>
</kw>
<doc>Initialize dependency libraries.</doc>
<status status="PASS" start="2026-04-17T03:15:21.121627" elapsed="0.022308"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:21.145127" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:21.145334" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:21.144935" elapsed="0.000424"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.145931" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.145552" elapsed="0.000420"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:15:21.146366" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:15:21.146571" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:15:21.146184" elapsed="0.000411"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.147159" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.146766" elapsed="0.000436"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:21.144695" elapsed="0.002561"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:15:21.144412" elapsed="0.002888"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:21.144151" elapsed="0.003191"/>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.162161" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.162017" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.161995" elapsed="0.000235"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.162553" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.162658" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.162395" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.163122" level="INFO">{1: 13}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.162846" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.163566" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.163328" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.164182" elapsed="0.000183"/>
</kw>
<msg time="2026-04-17T03:15:21.164461" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:21.164506" level="INFO">${old_connection_index} = 13</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.163777" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:21.165422" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.166247" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.166068" elapsed="0.000859">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.165734" elapsed="0.001256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.167524" elapsed="0.000099"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.167186" elapsed="0.000481"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:21.164880" elapsed="0.002830"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:21.164647" elapsed="0.003110"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.164627" elapsed="0.003155"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:21.168642" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.168299" elapsed="0.000379"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:21.168743" elapsed="0.000041"/>
</return>
<msg time="2026-04-17T03:15:21.169005" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.167999" elapsed="0.001037"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.169232" elapsed="0.000405"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.169923" level="INFO">index=15
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.170021" level="INFO">${karaf_connection_object} = index=15
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.169817" elapsed="0.000230"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.170222" elapsed="0.002656"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.173330" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:21.174666" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.173054" elapsed="0.001991">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.178279" elapsed="0.000303"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.178757" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.179059" elapsed="0.000114"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.175896" elapsed="0.003328"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:21.175370" elapsed="0.003897"/>
</kw>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.160169" elapsed="0.019176">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=125</arg>
<arg>max_retries=0</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.179515" elapsed="0.000021"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.179701" elapsed="0.000019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${ODL_SYSTEM_IP}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.179874" elapsed="0.000020"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.180113" elapsed="0.000024"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.180388" elapsed="0.000024"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.180677" elapsed="0.000023"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.180861" elapsed="0.000019"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<var>${period}</var>
<arg>${CHECK_PERIOD_CHANGE_COUNT_MANY}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.181036" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER_CHANGE_COUNT_MANY} * (${COUNT_CHANGE_COUNT_MANY} * 3.0 / 10000 + ${period} * (${REPETITIONS_CHANGE_COUNT_MANY} + 1)) + 20</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.181235" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.181419" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER_CHANGE_COUNT_MANY} * (${COUNT_CHANGE_COUNT_MANY} * 2.0 / 10000 + ${period} * (${REPETITIONS_CHANGE_COUNT_MANY} + 1)) + 20</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.181592" elapsed="0.000019"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${bgp_emptying_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.181769" elapsed="0.000019"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<arg>log:set ${KARAF_LOG_LEVEL}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.182148" elapsed="0.000025"/>
</kw>
<doc>Setup imported resources, SSH-login to ODL system,
create HTTP session, put Python tool to ODL system.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.506907" elapsed="3.675355">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<test id="s1-s6-t1" name="Check_For_Empty_Ipv4_Topology_Before_Talking" line="106">
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:21.182415" elapsed="0.000577">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t2" name="Reconfigure_ODL_To_Accept_Connections" line="112">
<doc>Configure BGP peer modules with initiate-connection set to false.
It sets peer-group as template, and than sets all neighbors using it.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.183194" elapsed="0.000493">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t3" name="Reconfigure_Data_Change_Counter" line="136">
<doc>Configure data change counter to count transactions in example-ipv4-topology instead of example-linkstate-topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.183851" elapsed="0.000465">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t4" name="Verify_For_Data_Change_Counter_Ready" line="140">
<doc>Data change counter might have been slower to start than ipv4 topology, wait for it.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.184485" elapsed="0.000423">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t5" name="Change_Karaf_Logging_Levels" line="144">
<doc>We may want to set more verbose logging here after configuration is done.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.185078" elapsed="0.000384">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t6" name="Start_Talking_BGP_Manager" line="150">
<doc>Start Python manager to connect speakers to ODL.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.185636" elapsed="0.000332">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t7" name="Wait_For_Stable_Talking_Ipv4_Topology" line="157">
<doc>Wait until example-ipv4-topology becomes stable. This is done by checking stability of the change counter.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.186149" elapsed="0.000479">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t8" name="Check_Talking_Ipv4_Topology_Count" line="165">
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:21.186816" elapsed="0.000454">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t9" name="Kill_Talking_BGP_Speakers" line="171">
<doc>Abort the Python speakers. Also, attempt to stop failing fast.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.187448" elapsed="0.000373">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t10" name="Wait_For_Stable_Ipv4_Topology_After_Talking" line="181">
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:21.187998" elapsed="0.000578">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t11" name="Check_For_Empty_Ipv4_Topology_After_Talking" line="190">
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:21.188776" elapsed="0.000390">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t12" name="Restore_Karaf_Logging_Levels" line="196">
<doc>Set logging on bgpcep and protocol to the global value.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.189327" elapsed="0.000592">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t13" name="Restore_Data_Change_Counter_Configuration" line="200">
<doc>Configure data change counter back to count transactions affecting example-linkstate-topology.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.190082" elapsed="0.000489">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<test id="s1-s6-t14" name="Delete_Bgp_Peer_Configuration" line="205">
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.190736" elapsed="0.000400">Parent suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.192991" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:15:21.193125" level="INFO">${processes} = None</msg>
<msg time="2026-04-17T03:15:21.193167" level="FAIL">No open connection.</msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.192848" elapsed="0.000696">No open connection.</status>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:15:21.193610" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:15:21.193819" level="INFO">${processes} = None</msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.192537" elapsed="0.001309">No open connection.</status>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.194302" level="INFO">None</msg>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.194030" elapsed="0.000317"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.195289" level="INFO">${arg_length} = None</msg>
<msg time="2026-04-17T03:15:21.195331" level="FAIL">Could not get length of 'None'.</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.194916" elapsed="0.000548">Could not get length of 'None'.</status>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:21.195685" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.195569" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.195549" elapsed="0.000197"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.196078" level="INFO">Executing command 'echo 'None' | awk '{print "kill -9",$4}''.</msg>
<msg time="2026-04-17T03:15:21.196202" level="INFO">${commands} = None</msg>
<msg time="2026-04-17T03:15:21.196242" level="FAIL">No open connection.</msg>
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.195911" elapsed="0.000589">No open connection.</status>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.196984" level="INFO">None</msg>
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.196730" elapsed="0.000298"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.197395" level="INFO">Executing command 'echo 'set -exu; None' | sudo sh'.</msg>
<msg time="2026-04-17T03:15:21.197510" level="INFO">${stdout} = None</msg>
<msg time="2026-04-17T03:15:21.197554" level="INFO">${stderr} = None</msg>
<msg time="2026-04-17T03:15:21.197593" level="FAIL">No open connection.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.197222" elapsed="0.000606">No open connection.</status>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.194598" elapsed="0.003368">Several failures occurred:

1) Could not get length of 'None'.

2) No open connection.

3) No open connection.</status>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.192226" elapsed="0.005857">Several failures occurred:

1) No open connection.

2) Could not get length of 'None'.

3) No open connection.

4) No open connection.</status>
</kw>
<arg>KillPythonTool.Search_And_Kill_Remote_Python</arg>
<arg>'play\.py'</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.191779" elapsed="0.006377"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Sysstat_Statistics" owner="Utils">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.199418" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.199533" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.199088" elapsed="0.000472"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.200559" level="INFO">${odl_connection} = 17</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.200176" elapsed="0.000409"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.202300" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:21.202376" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:21.202011" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.202567" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.203780" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:21.526592" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:17 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:21.203465" elapsed="0.323265"/>
</kw>
<msg time="2026-04-17T03:15:21.526810" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.203063" elapsed="0.323834"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:21.201554" elapsed="0.325454"/>
</kw>
<msg time="2026-04-17T03:15:21.527059" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.201149" elapsed="0.325988"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:21.200793" elapsed="0.326430"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-17T03:15:21.527282" elapsed="0.000039"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.179 and return its identifier.</doc>
<status status="PASS" start="2026-04-17T03:15:21.199823" elapsed="0.327624"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.529319" level="INFO">sar -A -f /var/log/sa/sa*</msg>
<arg>sar -A -f /var/log/sa/sa*</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-17T03:15:21.527820" elapsed="0.001571"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.531593" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<msg time="2026-04-17T03:15:21.531695" level="INFO">${output} = [?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<var>${output}</var>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:15:21.529583" elapsed="0.002205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.532292" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.531965" elapsed="0.000376"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.532505" elapsed="0.000148"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:21.532695" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.536056" elapsed="0.000354"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.536587" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.536912" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.533052" elapsed="0.004016"/>
</kw>
<doc>Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
that node was running. Used for debug purposes. Returns whole output of sysstat.</doc>
<status status="PASS" start="2026-04-17T03:15:21.198777" elapsed="0.338404"/>
</kw>
<arg>Utils.Get_Sysstat_Statistics</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.198324" elapsed="0.338903"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:21.537475" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:15:21.537400" elapsed="0.000173"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:15:21.537748" elapsed="0.000102"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:15:21.191535" elapsed="0.346368"/>
</kw>
<doc>BGP performance of ingesting from many iBGP peers, data change counter is used.

Copyright (c) 2018 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 suite uses play.py processes as iBGP peers.
This is analogue of single peer performance suite, which uses many peers.
Each peer is of ibgp type, and they contribute to the same example-bgp-rib,
and thus to the same single example-ipv4-topology.
The suite only looks at example-ipv4-topology, so RIB is not examined.

This suite requires odl-bgpcep-data-change-counter to be installed so
make sure it is added to "install-features" of any jobs that are going to invoke it.
Use the other version of the suite (manypeers_prefixcount.robot) if the feature does not work.

The suite consists of two halves, differing on which side initiates BGP connection.
Data change counter is a lightweight way to detect "work is being done".
WaitUtils provide a nice Keyword to wait for stability, but it needs
initial value, that is why Store_Change_Count appears just before work-inducing action.
The time for Wait_For_Stable_* cases to finish is the main performance metric.
After waiting for stability is done, full check on number of prefixes present is performed.

TODO: Currently, if a bug causes zero increase of data changes,
affected test cases will wait for max time. Reconsider.
If zero increase is allowed as stable, higher number of repetitions should be required.

ODL distinguishes peers by their IP addresses.
Currently, this suite requires python utils to be started on ODL System,
to guarantee IP address block is available for them to bind to.
TODO: Figure out how to use Docker and docker IP pool available in RelEng.

Currently, 127.0.0.1 is hardcoded as the first peer address to use.
TODO: Figure out how to make it configurable.
As peer IP adresses are set incrementally, we need ipaddr to be used in Robot somehow.

Brief description how to configure BGP peer can be found here:
https://wiki.opendaylight.org/view/BGP_LS_PCEP:User_Guide#BGP_Peer
http://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html#bgp-peering

TODO: Is there a need for version of this suite where ODL connects to pers?
Note that configuring ODL is slow, which may affect measured performance singificantly.
Advanced TODO: Give manager ability to start pushing on trigger long after connections are established.</doc>
<status status="FAIL" start="2026-04-17T03:15:17.418677" elapsed="4.119258">Suite setup failed:
NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</suite>
<suite id="s1-s7" name="Restart Odl With Tell Based True" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_true.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.700345" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.695568" elapsed="0.004833"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:15:21.695323" elapsed="0.005155"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.706163" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:15:21.701588" elapsed="0.004605"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:15:21.706406" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.706290" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.706263" elapsed="0.000213"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.707007" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.706643" elapsed="0.000408"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.707552" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:15:21.707235" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:15:21.708208" elapsed="0.000310"/>
</kw>
<msg time="2026-04-17T03:15:21.708631" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:21.708688" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:21.707839" elapsed="0.000879"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.709402" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:21.708930" elapsed="0.000505"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.711126" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:21.710722" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.711745" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:21.711377" elapsed="0.000408"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.712452" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.712005" elapsed="0.000485"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.716233" elapsed="0.000220"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.716955" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:21.716612" elapsed="0.000369"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.717151" elapsed="0.000241"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.718226" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:21.717908" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:15:21.718298" elapsed="0.000038"/>
</return>
<msg time="2026-04-17T03:15:21.718457" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:21.717586" elapsed="0.000896"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:21.719083" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543bdc43d0&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:15:21.718637" elapsed="0.000832"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.719635" elapsed="0.000206"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:15:21.715647" elapsed="0.004255"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:21.715456" elapsed="0.004490"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:15:21.712568" elapsed="0.007410"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.720554" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.720161" elapsed="0.000436"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.721180" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.720772" elapsed="0.000452"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.721810" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:15:21.721387" elapsed="0.000469"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:15:21.709973" elapsed="0.011942"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:15:21.701234" elapsed="0.020736"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:21.722166" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:21.722035" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.722016" elapsed="0.000217"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.725480" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:21.725082" elapsed="0.000468"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.726071" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:21.725756" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:21.726161" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:21.726317" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:21.724753" elapsed="0.001589"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:21.727378" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.727082" elapsed="0.000323"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.728250" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.728351" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.728067" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:21.731210" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:21.730815" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:21.730796" elapsed="0.000610"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.731685" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:21.731806" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:21.731556" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.732896" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:21.731982" elapsed="0.000961"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.733777" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:21.733120" elapsed="0.000684"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:21.735625" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:21.735826" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:21.734553" elapsed="0.001322"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.736172" elapsed="0.000606"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:21.738427" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:22.074184" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:21 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:21.737892" elapsed="0.336576"/>
</kw>
<msg time="2026-04-17T03:15:22.074602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.737113" elapsed="0.337708"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:21.734025" elapsed="0.341121"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:22.075796" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:15:22.088602" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:15:22.088959" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:22.089060" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:22.075394" elapsed="0.013766"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:22.089550" elapsed="0.000470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:22.091728" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:22.090584" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:22.092399" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:22.092011" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:22.091958" elapsed="0.000602"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:15:22.092953" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-17T03:15:22.092675" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:22.092641" elapsed="0.000530"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:22.093245" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:22.099725" elapsed="0.000737"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:22.100691" elapsed="0.000433"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:22.101318" elapsed="0.000188"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:22.093964" elapsed="0.007623"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:15:21.730325" elapsed="0.371355"/>
</kw>
<msg time="2026-04-17T03:15:22.101734" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.729555" elapsed="0.372230"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:21.729054" elapsed="0.372809"/>
</kw>
<msg time="2026-04-17T03:15:22.101903" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:21.728533" elapsed="0.373415"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:22.105159" elapsed="0.000310"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:22.105632" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:22.105923" elapsed="0.000094"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:22.102271" elapsed="0.003797"/>
</kw>
<msg time="2026-04-17T03:15:22.106186" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:15:21.727625" elapsed="0.378585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:22.106659" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:22.106388" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:22.106740" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:15:21.726701" elapsed="0.380160"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:21.726521" elapsed="0.380377"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:21.726394" elapsed="0.380538"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:15:21.722455" elapsed="0.384532"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:15:22.107225" elapsed="0.000213"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:22.122168" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:22.122039" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:22.122020" elapsed="0.000217"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:22.122581" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:22.122688" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:22.122390" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:22.123145" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:22.122867" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:22.123603" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:22.123340" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:22.124562" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:15:22.124287" elapsed="0.000401">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:15:22.124811" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:22.124860" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:22.123849" elapsed="0.001037"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:22.125387" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:22.124972" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:22.124951" elapsed="0.000546"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:22.126361" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:22.126043" elapsed="0.000351"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:22.126447" elapsed="0.000055"/>
</return>
<msg time="2026-04-17T03:15:22.126643" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:22.125731" elapsed="0.000938"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:22.126850" elapsed="0.000477"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:22.127674" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:22.127792" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:22.127550" elapsed="0.000271"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:22.127998" elapsed="0.003232"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:22.131738" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:22.133062" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:22.131433" elapsed="0.002113">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:22.136844" elapsed="0.000330"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:22.137339" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:22.137636" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:22.134385" elapsed="0.003397"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:22.133837" elapsed="0.003989"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:22.121757" elapsed="0.016152">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:23.157965" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:23.157823" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:23.157797" elapsed="0.000254"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:23.158444" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:23.158560" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:23.158260" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:23.159042" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:23.158744" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:23.159506" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:23.159260" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:23.160128" elapsed="0.000215"/>
</kw>
<msg time="2026-04-17T03:15:23.160444" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:23.160491" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:23.159713" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:23.161350" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:23.162163" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:23.161978" elapsed="0.000706">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:23.161651" elapsed="0.001095"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:23.163257" elapsed="0.000098"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:23.162916" elapsed="0.000484"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:23.160812" elapsed="0.002631"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:23.160590" elapsed="0.002902"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:23.160571" elapsed="0.002944"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:23.164285" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:23.164001" elapsed="0.000340"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:23.164391" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:15:23.164547" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:23.163721" elapsed="0.000850"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:23.164726" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:23.165427" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:23.165527" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:23.165323" elapsed="0.000230"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:23.165700" elapsed="0.002707"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:23.168829" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:23.169857" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:23.168572" elapsed="0.001680">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:23.173628" elapsed="0.000304"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:23.174116" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:23.197335" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:23.171043" elapsed="0.026471"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:23.170531" elapsed="0.027029"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:23.157429" elapsed="0.040215">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:24.219364" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:24.219222" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:24.219196" elapsed="0.000249"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:24.219827" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:24.219955" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:24.219639" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:24.220464" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:24.220159" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:24.220912" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:24.220667" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:24.221609" elapsed="0.000196"/>
</kw>
<msg time="2026-04-17T03:15:24.221911" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:24.221960" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:24.221135" elapsed="0.000850"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:24.222904" elapsed="0.000146"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:24.223790" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:24.223599" elapsed="0.000741">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:24.223252" elapsed="0.001154"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:24.224919" elapsed="0.000105"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:24.224580" elapsed="0.000492"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:24.222381" elapsed="0.002762"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:24.222136" elapsed="0.003058"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:24.222089" elapsed="0.003130"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:24.226141" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:24.225777" elapsed="0.000392"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:24.226221" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:15:24.226386" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:24.225460" elapsed="0.000950"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:24.226571" elapsed="0.000430"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:24.227308" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:24.227415" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:24.227190" elapsed="0.000253"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:24.227602" elapsed="0.002878"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:24.230998" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:24.232605" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:24.230717" elapsed="0.002462">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:24.236777" elapsed="0.000328"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:24.237273" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:24.237624" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:24.234199" elapsed="0.003594"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:24.233526" elapsed="0.004313"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:24.218803" elapsed="0.019126">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.261298" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.261153" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.261124" elapsed="0.000258"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.261796" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:25.261915" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.261608" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.262421" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:25.262114" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.262869" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:25.262623" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.263507" elapsed="0.000202"/>
</kw>
<msg time="2026-04-17T03:15:25.263809" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:25.263855" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.263077" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:25.264707" elapsed="0.000137"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.265578" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.265392" elapsed="0.000747">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.265009" elapsed="0.001205"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.266743" elapsed="0.000112"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.266396" elapsed="0.000506"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:25.264196" elapsed="0.002751"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:25.263953" elapsed="0.003043"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.263934" elapsed="0.003089"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:25.267906" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.267616" elapsed="0.000316"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:25.267987" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:15:25.268159" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:25.267271" elapsed="0.000913"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.268406" elapsed="0.000417"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.269118" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:25.269219" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.268992" elapsed="0.000253"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.269393" elapsed="0.002745"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.272568" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:25.273774" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.272305" elapsed="0.001920">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.277671" elapsed="0.000337"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.278213" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.278562" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:25.275068" elapsed="0.003673"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:25.274533" elapsed="0.004259"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.260706" elapsed="0.018178">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:25.278983" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:15:22.108166" elapsed="3.170916">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:22.107784" elapsed="3.171388"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:22.107643" elapsed="3.171574"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:15:22.107495" elapsed="3.171760"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:15:21.700777" elapsed="3.578540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.282156" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.282023" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.282001" elapsed="0.000227"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.287448" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.287337" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.287318" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.288552" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:25.288147" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.289074" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:25.288741" elapsed="0.000381"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:25.289171" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:15:25.289350" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:25.287791" elapsed="0.001584"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.295660" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.295529" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.295508" elapsed="0.000223"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.296854" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.296740" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.296720" elapsed="0.000203"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:25.297371" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.297069" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.297807" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:25.297557" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.298698" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.298429" elapsed="0.000875">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:25.299421" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:15:25.299465" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.298022" elapsed="0.001466"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.300313" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.300048" elapsed="0.000822">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:15:25.300982" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:15:25.301026" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.299702" elapsed="0.001346"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.301849" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_true.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.301370" elapsed="0.000540">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_true.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:25.301147" elapsed="0.000831">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_true.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:25.301125" elapsed="0.000885">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_true.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:25.302225" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:25.302463" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:25.302320" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:25.302302" elapsed="0.000237"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.302570" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.304056" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.305015" elapsed="0.000590"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.305884" elapsed="0.000196"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:25.303625" elapsed="0.002629"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:25.302948" elapsed="0.003357"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.296482" elapsed="0.009942">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_true.robot"</status>
</kw>
<msg time="2026-04-17T03:15:25.306551" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:25.306615" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_true.r...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.295887" elapsed="0.010758"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.306882" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.306772" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.306752" elapsed="0.000196"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.307772" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.307645" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.307598" elapsed="0.000242"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.308392" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:25.308504" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.308000" elapsed="0.000530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.308990" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:25.308686" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.309463" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:25.309215" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.310024" elapsed="0.000267"/>
</kw>
<msg time="2026-04-17T03:15:25.310389" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:15:25.310435" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.309665" elapsed="0.000792"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:15:25.311337" elapsed="0.000232"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.312599" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.312327" elapsed="0.002036">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.311793" elapsed="0.002780"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.315781" elapsed="0.000265"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.314849" elapsed="0.001393"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:15:25.310753" elapsed="0.005559"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:25.310532" elapsed="0.005849"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.310513" elapsed="0.005909"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:25.317555" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.317168" elapsed="0.000426"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:25.317661" elapsed="0.000043"/>
</return>
<msg time="2026-04-17T03:15:25.317832" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:25.316720" elapsed="0.001138"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.318023" elapsed="0.000470"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.318915" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:25.319066" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.318751" elapsed="0.000401"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.319386" elapsed="0.003567"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.323857" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:15:25.325086" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.323427" elapsed="0.002269">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.331069" elapsed="0.000897"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.332244" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.332708" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:25.327008" elapsed="0.005926"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:15:25.326200" elapsed="0.006805"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.307372" elapsed="0.025793">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:25.333707" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.333819" elapsed="0.000030"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:15:25.295162" elapsed="0.038819">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:15:25.334171" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:25.334241" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.289914" elapsed="0.044363"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:25.334776" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:25.334399" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.334367" elapsed="0.000523"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:25.289699" elapsed="0.045223"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:25.289464" elapsed="0.045501"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:15:25.287008" elapsed="0.048029"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:15:25.279957" elapsed="0.055169"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:25.279483" elapsed="0.055708"/>
</kw>
<arg>http_timeout=125</arg>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:15:21.694917" elapsed="3.640357"/>
</kw>
<test id="s1-s7-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.343017" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:25.342426" elapsed="0.000629"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.343762" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:25.343321" elapsed="0.000478"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:25.343856" elapsed="0.000045"/>
</return>
<msg time="2026-04-17T03:15:25.344041" level="INFO">${stop_index_list} = [1]</msg>
<var>${stop_index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:25.341816" elapsed="0.002250"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.345507" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:25.344932" elapsed="0.000615"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.346227" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:25.345787" elapsed="0.000480"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:25.346336" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:15:25.346566" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${original_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:25.344390" elapsed="0.002214"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.348609" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:25.348132" elapsed="0.000516"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.349189" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:25.348850" elapsed="0.000367"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:25.349261" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:25.349415" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:25.347581" elapsed="0.001858"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:25.350512" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.350240" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.351353" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:25.351452" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.351190" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:25.354394" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:25.354076" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.354055" elapsed="0.000456"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.354909" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:25.355061" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.354723" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.356473" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1-SNAPSHOT/bin/stop" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:25.355516" elapsed="0.001024"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.357409" level="INFO">${conn_id} = 15</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.356774" elapsed="0.000674"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.359237" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:25.359418" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:25.358399" elapsed="0.001055"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.359771" elapsed="0.001037"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.363843" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:25.689132" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:22 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:25.362955" elapsed="0.326470"/>
</kw>
<msg time="2026-04-17T03:15:25.689599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.361166" elapsed="0.328664"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:25.357759" elapsed="0.332304"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.690847" level="INFO">Executing command '/tmp/karaf-0.23.1-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-17T03:15:25.704038" level="INFO">Command exited with return code 127.</msg>
<msg time="2026-04-17T03:15:25.704400" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:25.704505" level="INFO">${stderr} = bash: line 1: /tmp/karaf-0.23.1-SNAPSHOT/bin/stop: No such file or directory</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:25.690500" elapsed="0.014062"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.705001" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.706619" level="INFO">bash: line 1: /tmp/karaf-0.23.1-SNAPSHOT/bin/stop: No such file or directory</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:25.705913" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.707212" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.706888" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.706839" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:15:25.707708" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-17T03:15:25.707480" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.707447" elapsed="0.000447"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.707966" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.725346" elapsed="0.000570"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.726112" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.726441" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:25.708802" elapsed="0.017791"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:15:25.353542" elapsed="0.373145"/>
</kw>
<msg time="2026-04-17T03:15:25.726745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.352935" elapsed="0.373870"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:25.352178" elapsed="0.374706"/>
</kw>
<msg time="2026-04-17T03:15:25.726924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.351634" elapsed="0.375335"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.730236" elapsed="0.000331"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.730734" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.731034" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:25.727300" elapsed="0.003923"/>
</kw>
<msg time="2026-04-17T03:15:25.731334" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:15:25.350752" elapsed="0.380616"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.731899" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:25.731606" elapsed="0.000337"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:25.731998" elapsed="0.000047"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:15:25.349810" elapsed="0.382457"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:25.349632" elapsed="0.382679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:25.349495" elapsed="0.382855"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:15:25.346914" elapsed="0.385503"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.732935" level="INFO">${updated_index_list} = [1]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:25.732592" elapsed="0.000371"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.733195" elapsed="0.000246"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-17T03:15:25.733728" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:25.733610" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.733581" elapsed="0.000215"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.736345" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:25.735901" elapsed="0.000475"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:25.737392" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.737067" elapsed="0.000352"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.738320" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:25.738430" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.738158" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:25.742841" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:25.742365" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:25.742088" elapsed="0.000898"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.744547" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:25.744801" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:25.744033" elapsed="0.000870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.746587" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:25.745986" elapsed="0.000718"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.749662" level="INFO">${conn_id} = 18</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:25.748066" elapsed="0.001802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:25.754381" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:25.754497" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:25.753913" elapsed="0.000623"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.754852" elapsed="0.000553"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:25.756794" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:26.074179" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:25 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:25.756315" elapsed="0.318003"/>
</kw>
<msg time="2026-04-17T03:15:26.074398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.755722" elapsed="0.318770"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:25.752511" elapsed="0.322276"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.076349" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-17T03:15:26.099702" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:15:26.100346" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-17T03:15:26.100678" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:26.075930" elapsed="0.025132"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.103434" elapsed="0.000984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.107162" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.105780" elapsed="0.001702"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:26.108470" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:26.107881" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.107751" elapsed="0.001220"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:15:26.109484" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-17T03:15:26.109266" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.109213" elapsed="0.000441"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:26.109736" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.116146" elapsed="0.000377"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.116782" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.117183" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:26.111271" elapsed="0.006127"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:15:25.740626" elapsed="0.376999"/>
</kw>
<msg time="2026-04-17T03:15:26.117937" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.739831" elapsed="0.378169"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:25.739194" elapsed="0.378885"/>
</kw>
<msg time="2026-04-17T03:15:26.118248" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:25.738617" elapsed="0.379678"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.121561" elapsed="0.000400"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.122219" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.122604" elapsed="0.000110"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:26.118594" elapsed="0.004176"/>
</kw>
<msg time="2026-04-17T03:15:26.122870" level="INFO">${output} = 0</msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:15:25.737656" elapsed="0.385240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.123426" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.123158" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:26.123533" elapsed="0.000045"/>
</return>
<msg time="2026-04-17T03:15:26.123734" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:15:25.736601" elapsed="0.387159"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-17T03:15:26.123807" elapsed="0.000027"/>
</return>
<msg time="2026-04-17T03:15:26.123953" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-17T03:15:25.735520" elapsed="0.388458"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-17T03:15:26.124156" elapsed="0.000393"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:25.735049" elapsed="0.389578"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-17T03:15:25.734461" elapsed="0.390229"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:25.734006" elapsed="0.390791"/>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="PASS" start="2026-04-17T03:15:25.733845" elapsed="0.391001"/>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.128719" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:26.128314" elapsed="0.000531"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.129342" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:26.129016" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:26.129414" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:15:26.129571" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:26.127876" elapsed="0.001720"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:26.130806" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.130518" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.131682" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:26.131799" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.131517" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:26.134712" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:26.134404" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.134381" elapsed="0.000415"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.135330" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:26.135441" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.134947" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.136139" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.135625" elapsed="0.000565"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.136845" level="INFO">${conn_id} = 21</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.136353" elapsed="0.000520"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.138284" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:26.138416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:26.137643" elapsed="0.000801"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.138647" elapsed="0.000720"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.141566" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:26.499584" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:26 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:26.140960" elapsed="0.359128"/>
</kw>
<msg time="2026-04-17T03:15:26.500413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.139611" elapsed="0.361196"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:26.137120" elapsed="0.364154"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.502394" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-17T03:15:26.514896" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:15:26.515233" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:26.515343" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:26.501821" elapsed="0.013579"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.515834" elapsed="0.000564"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.517873" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.516867" elapsed="0.001147"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:26.518623" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:26.518275" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.518217" elapsed="0.000622"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:15:26.519274" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-17T03:15:26.518970" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.518932" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:26.519618" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.537483" elapsed="0.000816"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.538477" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.538799" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:26.520425" elapsed="0.018529"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:15:26.133796" elapsed="0.405253"/>
</kw>
<msg time="2026-04-17T03:15:26.539123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.133179" elapsed="0.406005"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:26.132571" elapsed="0.406694"/>
</kw>
<msg time="2026-04-17T03:15:26.539306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.132005" elapsed="0.407348"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.542697" elapsed="0.000319"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.543202" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.543504" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:26.539655" elapsed="0.003998"/>
</kw>
<msg time="2026-04-17T03:15:26.543748" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:15:26.131057" elapsed="0.412716"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.544245" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.543971" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:26.544330" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:15:26.129979" elapsed="0.414487"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:26.129795" elapsed="0.414721"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:26.129655" elapsed="0.414899"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:15:26.125202" elapsed="0.419412"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-17T03:15:26.544655" elapsed="0.000027"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="PASS" start="2026-04-17T03:15:25.336290" elapsed="1.208492"/>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:15:25.335380" elapsed="1.209519"/>
</test>
<test id="s1-s7-t2" name="Set_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.550421" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:26.549998" elapsed="0.000450"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.550911" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:26.550611" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:26.550982" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:15:26.551159" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:26.549609" elapsed="0.001576"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.553581" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:26.553683" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.553425" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:26.555522" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.555210" elapsed="0.000339"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:15:26.555597" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:15:26.555747" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:26.554874" elapsed="0.000897"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.559517" level="INFO">${odl_connection} = 24</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.558800" elapsed="0.000815"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.562805" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:26.562884" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:26.562512" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.563141" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.564440" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:26.881795" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:26 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:26.564067" elapsed="0.317880"/>
</kw>
<msg time="2026-04-17T03:15:26.882032" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.563693" elapsed="0.318447"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:26.561879" elapsed="0.320379"/>
</kw>
<msg time="2026-04-17T03:15:26.882309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.561481" elapsed="0.320877"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:26.560498" elapsed="0.322045"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-17T03:15:26.882638" elapsed="0.000056"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.179 and return its identifier.</doc>
<status status="PASS" start="2026-04-17T03:15:26.557658" elapsed="0.325286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.886490" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-17T03:15:26.899182" level="INFO">Command exited with return code 2.</msg>
<msg time="2026-04-17T03:15:26.899436" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:26.899532" level="INFO">${stderr} = sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</msg>
<msg time="2026-04-17T03:15:26.899624" level="INFO">${rc} = 2</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:26.885975" elapsed="0.013699"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.901648" level="INFO">Length is 124.</msg>
<msg time="2026-04-17T03:15:26.901858" level="FAIL">'sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.901003" elapsed="0.000999">'sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory' should be empty.</status>
</kw>
<msg time="2026-04-17T03:15:26.902264" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-17T03:15:26.902360" level="INFO">${result} = 'sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory' should be empty.</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:26.900231" elapsed="0.002180"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.903915" level="INFO">${success} = False</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:26.902905" elapsed="0.001068"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.906883" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.906458" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.907562" level="INFO">sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.907203" elapsed="0.000425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.908237" level="INFO">2</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.907852" elapsed="0.000449"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-17T03:15:26.905064" elapsed="0.003316"/>
</kw>
<status status="PASS" start="2026-04-17T03:15:26.904298" elapsed="0.004135"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.904248" elapsed="0.004222"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-17T03:15:26.908795" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:26.908641" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.908613" elapsed="0.000282"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:15:26.909207" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:26.909048" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.909022" elapsed="0.000281"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.910167" level="FAIL">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</msg>
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.909593" elapsed="0.000666">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="FAIL" start="2026-04-17T03:15:26.884959" elapsed="0.025620">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<msg time="2026-04-17T03:15:26.910814" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:15:26.910920" level="INFO">${result} = Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:15:26.883259" elapsed="0.027717"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.911385" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:15:26.912130" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:26.911851" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.911823" elapsed="0.000515"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.913458" level="FAIL">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</msg>
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.912552" elapsed="0.001053">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.556703" elapsed="0.357200">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<msg time="2026-04-17T03:15:26.914050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.555928" elapsed="0.358221"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.554346" elapsed="0.359929">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<msg time="2026-04-17T03:15:26.914322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.553867" elapsed="0.360500"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.917536" elapsed="0.000334"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.918038" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.918368" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:26.914688" elapsed="0.003829"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.552695" elapsed="0.365900">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<msg time="2026-04-17T03:15:26.918656" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.552247" elapsed="0.366455"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.551541" elapsed="0.367265">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:15:26.551384" elapsed="0.367494">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:15:26.551248" elapsed="0.367691">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="FAIL" start="2026-04-17T03:15:26.546940" elapsed="0.372093">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<kw name="Check_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:26.919333" elapsed="0.000026"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:26.919515" elapsed="0.000021"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:26.919688" elapsed="0.000020"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:26.919855" elapsed="0.000019"/>
</kw>
<arg>True</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="FAIL" start="2026-04-17T03:15:26.546469" elapsed="0.373489">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</kw>
<kw name="Check_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:26.920206" elapsed="0.000024"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:26.923825" elapsed="0.000027"/>
</kw>
<doc>Un-comment the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:26.545131" elapsed="0.378900">Got rc: 2 or stderr was not empty: sed: can't read //tmp/karaf-0.23.1-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg: No such file or directory</status>
</test>
<test id="s1-s7-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.937645" level="INFO">${base_command} = /tmp/karaf-0.23.1-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:26.937258" elapsed="0.000415"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.938260" level="INFO">${command} = /tmp/karaf-0.23.1-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:26.937874" elapsed="0.000412"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:15:26.938716" level="INFO">${epoch} = 1776395726.938643</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:15:26.938454" elapsed="0.000288"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.939332" level="INFO">${gc_filepath} = /tmp/karaf-0.23.1-SNAPSHOT/data/log/gc_1776395726.938643.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:26.938911" elapsed="0.000447"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.939902" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1-SNAPSHOT/data/log/gc_1776395726.938643.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:26.939528" elapsed="0.000401"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.941491" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:26.941086" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.941988" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:26.941677" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:26.942057" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:15:26.942234" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:26.940689" elapsed="0.001569"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:15:26.943326" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.943040" elapsed="0.000312"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.944389" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:26.944492" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.943979" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:26.947230" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:26.946923" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:26.946903" elapsed="0.000412"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.947723" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:15:26.947827" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:15:26.947461" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.948499" level="INFO">Attempting to execute command "/tmp/karaf-0.23.1-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1-SNAPSHOT/data/log/gc_1776395726.938643.log" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:26.948005" elapsed="0.000542"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.949142" level="INFO">${conn_id} = 26</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:26.948704" elapsed="0.000465"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:15:26.950443" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:15:26.950568" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:15:26.949891" elapsed="0.000701"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.950780" elapsed="0.000673"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:15:26.953556" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:15:27.284235" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:15:06 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:26 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:15:26.952970" elapsed="0.331505"/>
</kw>
<msg time="2026-04-17T03:15:27.284610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.951682" elapsed="0.333108"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:15:26.949429" elapsed="0.335542"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:15:27.285518" level="INFO">Executing command '/tmp/karaf-0.23.1-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.23.1-SNAPSHOT/data/log/gc_1776395726.938643.log'.</msg>
<msg time="2026-04-17T03:15:27.298322" level="INFO">Command exited with return code 127.</msg>
<msg time="2026-04-17T03:15:27.298481" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:15:27.298525" level="INFO">${stderr} = bash: line 1: /tmp/karaf-0.23.1-SNAPSHOT/bin/start: No such file or directory</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:15:27.285246" elapsed="0.013304"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:27.298776" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:27.299627" level="INFO">bash: line 1: /tmp/karaf-0.23.1-SNAPSHOT/bin/start: No such file or directory</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:27.299273" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:27.299916" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:27.299759" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:27.299733" elapsed="0.000256"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:15:27.300173" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-17T03:15:27.300041" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:15:27.300026" elapsed="0.000242"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:15:27.300302" elapsed="0.000015"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:27.314170" elapsed="0.000764"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:27.315130" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:27.315464" elapsed="0.000100"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:27.300641" elapsed="0.014976"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:15:26.946384" elapsed="0.369327"/>
</kw>
<msg time="2026-04-17T03:15:27.315769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.945748" elapsed="0.370082"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:15:26.945201" elapsed="0.370707"/>
</kw>
<msg time="2026-04-17T03:15:27.315948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:26.944677" elapsed="0.371315"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:15:27.319447" elapsed="0.000329"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:15:27.319943" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:15:27.320260" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:15:27.316322" elapsed="0.004088"/>
</kw>
<msg time="2026-04-17T03:15:27.320504" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:15:26.943566" elapsed="0.376963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:27.320999" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:27.320742" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:15:27.321087" elapsed="0.000083"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:15:26.942627" elapsed="0.378647"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:15:26.942447" elapsed="0.378866"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:15:26.942313" elapsed="0.379036"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:15:26.940166" elapsed="0.381240"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:27.333956" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:27.333544" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:27.334536" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:27.334192" elapsed="0.000370"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:27.334608" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:15:27.334766" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:27.333152" elapsed="0.001638"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:27.336360" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:27.336036" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:15:27.336432" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:27.336579" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:27.335681" elapsed="0.000922"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:27.344778" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:27.344508" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:27.345247" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:27.344984" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:27.351007" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:27.347734" elapsed="0.004979">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:27.345503" elapsed="0.007300">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:27.353000" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:27.352839" elapsed="0.000226"/>
</branch>
<status status="FAIL" start="2026-04-17T03:15:27.345480" elapsed="0.007608">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:27.353710" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:27.353853" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:27.353813" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:27.353794" elapsed="0.000122"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:27.354063" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:15:27.354149" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:15:27.339853" elapsed="0.014439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:27.354369" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:15:27.336816" elapsed="0.017655">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:27.354695" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:15:27.354823" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:27.354786" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:27.354769" elapsed="0.000116"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:27.355082" elapsed="0.000060"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:27.355340" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:15:27.355407" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:15:27.335291" elapsed="0.020217">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:15:27.355629" elapsed="0.000023"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:15:27.355588" elapsed="0.000091"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:27.355571" elapsed="0.000130"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:27.355850" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:15:27.335036" elapsed="0.020886">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:15:27.334848" elapsed="0.021136">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:15:27.332728" elapsed="0.023353">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:27.332395" elapsed="0.023762">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:27.332373" elapsed="0.023816">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:15:27.356496" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:27.356292" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:27.356270" elapsed="0.000303"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:15:27.356837" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:27.356626" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:27.356610" elapsed="0.000307"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:15:27.331951" elapsed="0.025048">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:37.376833" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:37.376384" elapsed="0.000482"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:37.377373" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:37.377045" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:37.377448" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:15:37.377615" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:37.375952" elapsed="0.001687"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:37.379191" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:37.378872" elapsed="0.000358"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:15:37.379277" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:15:37.379424" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:37.378520" elapsed="0.000928"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:37.387354" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:37.387059" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:37.387804" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:37.387558" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:37.393992" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:37.390210" elapsed="0.005507">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:37.387917" elapsed="0.007898">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:37.396053" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:37.395853" elapsed="0.000301"/>
</branch>
<status status="FAIL" start="2026-04-17T03:15:37.387898" elapsed="0.008281">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:37.396753" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:37.396967" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:37.396926" elapsed="0.000085"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:37.396907" elapsed="0.000125"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:37.397208" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:15:37.397280" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:15:37.382292" elapsed="0.015102">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:37.397468" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:15:37.379660" elapsed="0.017908">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:37.397793" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:15:37.397920" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:37.397884" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:37.397867" elapsed="0.000113"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:37.398220" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:37.398447" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:15:37.398514" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:15:37.378133" elapsed="0.020482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:15:37.398735" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:15:37.398696" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:37.398679" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:37.398942" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:15:37.377886" elapsed="0.021127">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:15:37.377696" elapsed="0.021379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:15:37.375484" elapsed="0.023708">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:37.374890" elapsed="0.024393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:37.374854" elapsed="0.024463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:15:37.399585" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:37.399384" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:37.399368" elapsed="0.000294"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:15:37.399964" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:37.399749" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:37.399732" elapsed="0.000312"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:15:37.374163" elapsed="0.025986">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:47.422209" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:47.421579" elapsed="0.000674"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:47.422920" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:47.422507" elapsed="0.000449"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:47.423021" elapsed="0.000050"/>
</return>
<msg time="2026-04-17T03:15:47.423266" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:47.420988" elapsed="0.002312"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:47.425374" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:47.424951" elapsed="0.000458"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:15:47.425471" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:15:47.425665" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:47.424468" elapsed="0.001228"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:47.438784" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:47.438498" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:47.439264" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:47.438995" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:47.444841" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:47.441606" elapsed="0.004984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:47.439381" elapsed="0.007302">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:47.446886" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:47.446719" elapsed="0.000232"/>
</branch>
<status status="FAIL" start="2026-04-17T03:15:47.439360" elapsed="0.007615">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:47.447558" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:47.447700" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:47.447661" elapsed="0.000143"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:47.447643" elapsed="0.000186"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:47.447980" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:15:47.448049" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:15:47.429635" elapsed="0.018541">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:47.448249" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:15:47.425986" elapsed="0.022360">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:47.448567" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:15:47.448693" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:47.448658" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:47.448641" elapsed="0.000112"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:47.448948" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:47.449182" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:15:47.449250" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:15:47.423938" elapsed="0.025415">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:15:47.449473" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:15:47.449434" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:47.449417" elapsed="0.000120"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:47.449678" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:15:47.423624" elapsed="0.026124">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:15:47.423375" elapsed="0.026470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:15:47.420425" elapsed="0.029523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:47.419875" elapsed="0.030133">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:47.419838" elapsed="0.030207">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:15:47.450364" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:47.450155" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:47.450133" elapsed="0.000309"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:15:47.450703" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:47.450494" elapsed="0.000297"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:47.450479" elapsed="0.000336"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:15:47.419151" elapsed="0.031746">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:15:57.471187" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:15:57.470638" elapsed="0.000584"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:15:57.471740" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:15:57.471405" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:15:57.471818" elapsed="0.000043"/>
</return>
<msg time="2026-04-17T03:15:57.471998" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:15:57.470156" elapsed="0.001867"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:15:57.473693" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:15:57.473361" elapsed="0.000365"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:15:57.473781" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:15:57.473932" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:15:57.472948" elapsed="0.001009"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:57.482163" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:57.481878" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:15:57.482617" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:15:57.482370" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:15:57.489323" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:15:57.485007" elapsed="0.005991">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:57.482728" elapsed="0.008410">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:57.491347" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:57.491180" elapsed="0.000233"/>
</branch>
<status status="FAIL" start="2026-04-17T03:15:57.482709" elapsed="0.008728">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:57.491976" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:57.492136" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:57.492079" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:57.492061" elapsed="0.000141"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:57.492398" elapsed="0.000024"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:15:57.492530" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:15:57.476932" elapsed="0.015742">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:15:57.492761" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:15:57.474208" elapsed="0.018656">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:57.493107" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:15:57.493242" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:15:57.493205" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:57.493188" elapsed="0.000155"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:57.493542" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:57.493763" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:15:57.493831" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:15:57.472549" elapsed="0.021384">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:15:57.494053" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:15:57.494013" elapsed="0.000095"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:57.493997" elapsed="0.000134"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:15:57.494273" elapsed="0.000020"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:15:57.472303" elapsed="0.022040">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:15:57.472085" elapsed="0.022320">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:15:57.469536" elapsed="0.024964">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:15:57.468946" elapsed="0.025613">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:15:57.468911" elapsed="0.025679">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:15:57.494854" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:57.494655" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:57.494639" elapsed="0.000292"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:15:57.495228" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:15:57.494983" elapsed="0.000302"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:15:57.494968" elapsed="0.000340"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:15:57.468238" elapsed="0.027183">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:16:07.516566" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:16:07.516116" elapsed="0.000482"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:16:07.517106" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:16:07.516779" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:16:07.517183" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:16:07.517353" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:16:07.515694" elapsed="0.001684"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:16:07.518974" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:16:07.518604" elapsed="0.000397"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:16:07.519047" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:16:07.519212" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:16:07.518253" elapsed="0.000984"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:07.527123" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:07.526844" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:07.527581" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:07.527331" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:16:07.533255" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:16:07.529902" elapsed="0.005036">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:07.527698" elapsed="0.007327">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:07.535238" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:07.535059" elapsed="0.000253"/>
</branch>
<status status="FAIL" start="2026-04-17T03:16:07.527679" elapsed="0.007662">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:07.535884" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:07.536022" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:07.535984" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:07.535967" elapsed="0.000121"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:07.536293" elapsed="0.000025"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:16:07.536370" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:16:07.522041" elapsed="0.014497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:07.536614" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:16:07.519452" elapsed="0.017262">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:07.536937" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:16:07.537066" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:07.537030" elapsed="0.000092"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:07.537012" elapsed="0.000133"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:07.537346" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:07.537572" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:16:07.537639" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:16:07.517854" elapsed="0.019889">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:16:07.537866" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:16:07.537826" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:07.537807" elapsed="0.000121"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:07.538076" elapsed="0.000040"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:16:07.517621" elapsed="0.020548">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:16:07.517434" elapsed="0.020796">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:16:07.515132" elapsed="0.023197">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:07.514581" elapsed="0.023806">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:16:07.514546" elapsed="0.023873">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:16:07.538763" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:07.538485" elapsed="0.000341"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:07.538469" elapsed="0.000381"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:16:07.539177" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:07.538904" elapsed="0.000332"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:07.538888" elapsed="0.000372"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:16:07.513830" elapsed="0.025514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:16:17.556476" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:16:17.555976" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:16:17.557178" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:16:17.556686" elapsed="0.000526"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:16:17.557262" elapsed="0.000043"/>
</return>
<msg time="2026-04-17T03:16:17.557466" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:16:17.555553" elapsed="0.001940"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:16:17.559313" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:16:17.558957" elapsed="0.000383"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:16:17.559387" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:16:17.559555" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:16:17.558595" elapsed="0.000986"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:17.568627" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:17.568210" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:17.569291" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:17.568914" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:16:17.575852" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:16:17.572133" elapsed="0.005758">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:17.569448" elapsed="0.008547">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:17.578281" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:17.578036" elapsed="0.000333"/>
</branch>
<status status="FAIL" start="2026-04-17T03:16:17.569418" elapsed="0.008982">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:17.579151" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:17.579332" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:17.579277" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:17.579251" elapsed="0.000162"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:17.579572" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:16:17.579645" elapsed="0.000019"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:16:17.562554" elapsed="0.017238">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:17.579941" elapsed="0.000019"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:16:17.559800" elapsed="0.020250">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:17.580301" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:16:17.580447" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:17.580405" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:17.580381" elapsed="0.000128"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:17.580713" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:17.580957" elapsed="0.000032"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:16:17.581041" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:16:17.557980" elapsed="0.023188">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:16:17.581341" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:16:17.581298" elapsed="0.000087"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:17.581278" elapsed="0.000130"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:17.581583" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:16:17.557745" elapsed="0.023916">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:16:17.557552" elapsed="0.024174">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:16:17.555079" elapsed="0.026752">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:17.554659" elapsed="0.027254">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:16:17.554633" elapsed="0.027316">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:16:17.582294" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:17.582019" elapsed="0.000341"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:17.582002" elapsed="0.000389"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:16:17.582719" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:17.582460" elapsed="0.000327"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:17.582442" elapsed="0.000376"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:16:17.554075" elapsed="0.028852">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:16:27.601125" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:16:27.600651" elapsed="0.000509"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:16:27.601683" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:16:27.601361" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:16:27.601760" elapsed="0.000041"/>
</return>
<msg time="2026-04-17T03:16:27.601932" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:16:27.600229" elapsed="0.001728"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:16:27.603646" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:16:27.603335" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:16:27.603721" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:16:27.603870" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:16:27.602901" elapsed="0.000994"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:27.612179" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:27.611836" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:27.612675" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:27.612418" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:16:27.618521" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:16:27.615079" elapsed="0.005334">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:27.612806" elapsed="0.007701">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:27.620727" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:27.620545" elapsed="0.000256"/>
</branch>
<status status="FAIL" start="2026-04-17T03:16:27.612782" elapsed="0.008042">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:27.621451" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:27.621639" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:27.621587" elapsed="0.000100"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:27.621563" elapsed="0.000145"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:27.621868" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:16:27.621944" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:16:27.606788" elapsed="0.015272">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:27.622252" elapsed="0.000018"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:16:27.604125" elapsed="0.018234">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:27.622599" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:16:27.622746" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:27.622696" elapsed="0.000092"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:27.622677" elapsed="0.000133"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:27.623063" elapsed="0.000026"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:27.623315" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:16:27.623383" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:16:27.602468" elapsed="0.021020">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:16:27.623633" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:16:27.623590" elapsed="0.000094"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:27.623567" elapsed="0.000139"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:27.623852" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:16:27.602226" elapsed="0.021698">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:16:27.602014" elapsed="0.021985">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:16:27.599762" elapsed="0.024354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:27.599302" elapsed="0.024888">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:16:27.599273" elapsed="0.024950">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:16:27.624504" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:27.624291" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:27.624275" elapsed="0.000327"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:16:27.624882" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:27.624659" elapsed="0.000280"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:27.624643" elapsed="0.000319"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:16:27.598647" elapsed="0.026398">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:16:37.645305" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:16:37.644405" elapsed="0.000951"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:16:37.646187" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:16:37.645638" elapsed="0.000590"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:16:37.646299" elapsed="0.000054"/>
</return>
<msg time="2026-04-17T03:16:37.646545" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:16:37.643696" elapsed="0.002886"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:16:37.648897" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:16:37.648454" elapsed="0.000481"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:16:37.649000" elapsed="0.000040"/>
</return>
<msg time="2026-04-17T03:16:37.649225" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:16:37.647914" elapsed="0.001346"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:37.658241" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:37.657921" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:37.658705" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:37.658453" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:16:37.664458" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:16:37.661067" elapsed="0.005091">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:37.658816" elapsed="0.007430">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:37.666439" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:37.666281" elapsed="0.000222"/>
</branch>
<status status="FAIL" start="2026-04-17T03:16:37.658797" elapsed="0.007729">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:37.667049" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:37.667215" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:37.667178" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:37.667159" elapsed="0.000119"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:37.667423" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:16:37.667493" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:16:37.653161" elapsed="0.014440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:37.667679" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:16:37.649555" elapsed="0.018221">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:37.668157" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:16:37.668290" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:37.668253" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:37.668236" elapsed="0.000114"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:37.668547" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:37.668764" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:16:37.668830" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:16:37.647300" elapsed="0.021633">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:16:37.669060" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:16:37.669020" elapsed="0.000098"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:37.669003" elapsed="0.000137"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:37.669283" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:16:37.646937" elapsed="0.022417">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:16:37.646664" elapsed="0.022752">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:16:37.643057" elapsed="0.026455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:37.642553" elapsed="0.027017">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:16:37.642518" elapsed="0.027083">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:16:37.669864" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:37.669666" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:37.669650" elapsed="0.000291"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:16:37.670215" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:37.669993" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:37.669978" elapsed="0.000317"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:16:37.641786" elapsed="0.028588">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:16:47.690363" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:16:47.689848" elapsed="0.000548"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:16:47.690981" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:16:47.690658" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:16:47.691064" elapsed="0.000057"/>
</return>
<msg time="2026-04-17T03:16:47.691259" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:16:47.689435" elapsed="0.001849"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:16:47.692928" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:16:47.692615" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:16:47.693003" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:16:47.693193" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:16:47.692239" elapsed="0.000986"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:47.702863" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:47.702556" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:47.703359" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:47.703087" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:16:47.709035" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:16:47.705703" elapsed="0.005059">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:47.703480" elapsed="0.007376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:47.711074" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:47.710893" elapsed="0.000268"/>
</branch>
<status status="FAIL" start="2026-04-17T03:16:47.703457" elapsed="0.007728">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:47.711770" elapsed="0.000031"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:47.711917" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:47.711877" elapsed="0.000087"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:47.711858" elapsed="0.000127"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:47.712160" elapsed="0.000024"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:16:47.712232" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:16:47.696164" elapsed="0.016185">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:47.712423" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:16:47.693468" elapsed="0.019056">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:47.712811" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:16:47.712946" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:47.712908" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:47.712887" elapsed="0.000119"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:47.713258" elapsed="0.000027"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:47.713511" elapsed="0.000030"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:16:47.713587" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:16:47.691793" elapsed="0.021902">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:16:47.713816" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:16:47.713778" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:47.713761" elapsed="0.000116"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:47.714026" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:16:47.691534" elapsed="0.022568">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:16:47.691340" elapsed="0.022844">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:16:47.688993" elapsed="0.025289">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:47.688620" elapsed="0.025724">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:16:47.688594" elapsed="0.025783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:16:47.714687" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:47.714443" elapsed="0.000302"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:47.714427" elapsed="0.000341"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:16:47.715030" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:47.714821" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:47.714806" elapsed="0.000322"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:16:47.688066" elapsed="0.027146">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:16:57.732108" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:16:57.731591" elapsed="0.000553"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:16:57.732652" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:16:57.732334" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:16:57.732728" elapsed="0.000041"/>
</return>
<msg time="2026-04-17T03:16:57.732983" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:16:57.731150" elapsed="0.001860"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:16:57.734672" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:16:57.734307" elapsed="0.000394"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:16:57.734748" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:16:57.734897" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:16:57.733926" elapsed="0.000996"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:57.743212" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:57.742923" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:16:57.743678" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:16:57.743426" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:16:57.749531" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:16:57.745986" elapsed="0.005383">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:57.743793" elapsed="0.007670">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:57.751681" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:57.751501" elapsed="0.000247"/>
</branch>
<status status="FAIL" start="2026-04-17T03:16:57.743773" elapsed="0.008000">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:57.752378" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:57.752520" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:57.752482" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:57.752464" elapsed="0.000120"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:57.752733" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:16:57.752802" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:16:57.737870" elapsed="0.015046">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:16:57.752989" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:16:57.735160" elapsed="0.017928">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:57.753341" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:16:57.753527" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:16:57.753490" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:57.753471" elapsed="0.000118"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:57.753789" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:57.754012" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:16:57.754079" elapsed="0.000031"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:16:57.733535" elapsed="0.020700">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:16:57.754376" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:16:57.754333" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:57.754313" elapsed="0.000124"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:16:57.754657" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:16:57.733286" elapsed="0.021457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:16:57.733071" elapsed="0.021747">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:16:57.730686" elapsed="0.024231">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:16:57.730208" elapsed="0.024776">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:16:57.730177" elapsed="0.024840">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:16:57.755314" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:57.755084" elapsed="0.000309"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:57.755068" elapsed="0.000377"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:16:57.755967" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:16:57.755577" elapsed="0.000475"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:16:57.755536" elapsed="0.000550"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:16:57.729513" elapsed="0.026757">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:17:07.775405" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:17:07.774928" elapsed="0.000509"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:17:07.775930" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:17:07.775620" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:17:07.776004" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:17:07.776190" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:17:07.774502" elapsed="0.001713"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:17:07.777919" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:17:07.777555" elapsed="0.000392"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:17:07.777993" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:17:07.778160" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:17:07.777200" elapsed="0.000985"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:07.786089" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:07.785788" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:07.786560" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:07.786313" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:17:07.792304" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:17:07.788858" elapsed="0.005139">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:07.786671" elapsed="0.007415">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:07.794307" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:07.794148" elapsed="0.000226"/>
</branch>
<status status="FAIL" start="2026-04-17T03:17:07.786653" elapsed="0.007745">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:07.794929" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:07.795067" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:07.795029" elapsed="0.000110"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:07.795011" elapsed="0.000150"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:07.795310" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:17:07.795379" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:17:07.780979" elapsed="0.014507">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:07.795589" elapsed="0.000020"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:17:07.778400" elapsed="0.017298">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:07.795932" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:17:07.796074" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:07.796030" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:07.796009" elapsed="0.000143"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:07.796350" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:07.796624" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:17:07.796696" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:17:07.776783" elapsed="0.020017">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:17:07.796919" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:17:07.796881" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:07.796863" elapsed="0.000115"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:07.797145" elapsed="0.000028"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:17:07.776550" elapsed="0.020676">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:17:07.776358" elapsed="0.020930">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:17:07.774063" elapsed="0.023323">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:07.773688" elapsed="0.023758">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:17:07.773662" elapsed="0.023815">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:17:07.797742" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:07.797544" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:07.797528" elapsed="0.000307"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:17:07.798122" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:07.797889" elapsed="0.000292"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:07.797873" elapsed="0.000331"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:17:07.773132" elapsed="0.025153">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:17:17.820698" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:17:17.820081" elapsed="0.000661"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:17:17.821302" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:17:17.820947" elapsed="0.000385"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:17:17.821383" elapsed="0.000045"/>
</return>
<msg time="2026-04-17T03:17:17.821564" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:17:17.819608" elapsed="0.001980"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:17:17.823495" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:17:17.823175" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:17:17.823572" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:17:17.823734" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:17:17.822581" elapsed="0.001180"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:17.832165" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:17.831862" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:17.832640" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:17.832376" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:17:17.839676" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:17:17.835044" elapsed="0.007317">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:17.832755" elapsed="0.009743">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:17.842820" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:17.842551" elapsed="0.000374"/>
</branch>
<status status="FAIL" start="2026-04-17T03:17:17.832735" elapsed="0.010225">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:17.843987" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:17.844224" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:17.844168" elapsed="0.000121"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:17.844140" elapsed="0.000180"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:17.844541" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:17:17.844646" elapsed="0.000028"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:17:17.826854" elapsed="0.017987">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:17.844978" elapsed="0.000029"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:17:17.824114" elapsed="0.021062">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:17.845513" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:17:17.845701" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:17.845649" elapsed="0.000139"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:17.845623" elapsed="0.000197"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:17.846166" elapsed="0.000043"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:17.846593" elapsed="0.000039"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:17:17.846698" elapsed="0.000023"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:17:17.822151" elapsed="0.024703">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:17:17.847035" elapsed="0.000023"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:17:17.846975" elapsed="0.000151"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:17.846950" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:17.847381" elapsed="0.000032"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:17:17.821882" elapsed="0.025626">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:17:17.821654" elapsed="0.025965">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:17:17.819023" elapsed="0.028747">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:17.818425" elapsed="0.029436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:17:17.818385" elapsed="0.029523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:17:17.848368" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:17.848024" elapsed="0.000426"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:17.847995" elapsed="0.000493"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:17:17.848906" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:17.848582" elapsed="0.000422"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:17.848550" elapsed="0.000500"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:17:17.817622" elapsed="0.031598">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:17:27.869771" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:17:27.869292" elapsed="0.000513"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:17:27.870339" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:17:27.869981" elapsed="0.000385"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:17:27.870414" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:17:27.870585" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:17:27.868704" elapsed="0.001906"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:17:27.872356" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:17:27.872011" elapsed="0.000373"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:17:27.872522" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:17:27.872683" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:17:27.871625" elapsed="0.001083"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:27.880679" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:27.880385" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:27.881148" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:27.880883" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:17:27.886857" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:17:27.883449" elapsed="0.005131">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:27.881264" elapsed="0.007406">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:27.888861" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:27.888705" elapsed="0.000219"/>
</branch>
<status status="FAIL" start="2026-04-17T03:17:27.881243" elapsed="0.007704">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:27.889502" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:27.889638" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:27.889600" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:27.889583" elapsed="0.000117"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:27.889848" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:17:27.889917" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:17:27.875582" elapsed="0.014444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:27.890112" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:17:27.872924" elapsed="0.017289">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:27.890438" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:17:27.890564" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:27.890529" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:27.890512" elapsed="0.000111"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:27.890815" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:27.891033" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:17:27.891147" elapsed="0.000017"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:17:27.871089" elapsed="0.020165">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:17:27.891375" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:17:27.891335" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:27.891318" elapsed="0.000117"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:27.891579" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:17:27.870856" elapsed="0.020794">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:17:27.870667" elapsed="0.021045">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:17:27.868051" elapsed="0.023758">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:27.867565" elapsed="0.024303">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:17:27.867530" elapsed="0.024369">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:17:27.892196" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:27.891966" elapsed="0.000287"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:27.891950" elapsed="0.000327"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:17:27.892579" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:27.892329" elapsed="0.000307"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:27.892314" elapsed="0.000345"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:17:27.866839" elapsed="0.025901">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:17:37.912775" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:17:37.912301" elapsed="0.000507"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:17:37.913315" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:17:37.912983" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:17:37.913389" elapsed="0.000038"/>
</return>
<msg time="2026-04-17T03:17:37.913555" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:17:37.911842" elapsed="0.001738"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:17:37.915162" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:17:37.914844" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:17:37.915235" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:17:37.915382" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:17:37.914499" elapsed="0.000994"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:37.923373" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:37.923111" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:37.923876" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:37.923627" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:17:37.929661" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:17:37.926179" elapsed="0.005221">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:37.923988" elapsed="0.007545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:37.931732" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:37.931569" elapsed="0.000230"/>
</branch>
<status status="FAIL" start="2026-04-17T03:17:37.923970" elapsed="0.007865">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:37.932410" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:37.932548" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:37.932510" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:37.932493" elapsed="0.000117"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:37.932758" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:17:37.932826" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:17:37.918317" elapsed="0.014630">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:37.933021" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:17:37.915714" elapsed="0.017426">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:37.933366" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:17:37.933492" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:37.933457" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:37.933440" elapsed="0.000111"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:37.933744" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:37.933961" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:17:37.934028" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:17:37.914115" elapsed="0.020031">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:17:37.934306" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:17:37.934267" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:37.934248" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:37.934512" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:17:37.913829" elapsed="0.020754">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:17:37.913636" elapsed="0.021009">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:17:37.911238" elapsed="0.023503">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:37.910718" elapsed="0.024083">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:17:37.910683" elapsed="0.024150">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:17:37.935126" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:37.934898" elapsed="0.000296"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:37.934882" elapsed="0.000335"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:17:37.935506" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:37.935272" elapsed="0.000292"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:37.935257" elapsed="0.000330"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:17:37.909999" elapsed="0.025671">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:17:47.956029" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:17:47.955541" elapsed="0.000524"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:17:47.956570" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:17:47.956260" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:17:47.956659" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:17:47.956857" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:17:47.955103" elapsed="0.001779"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:17:47.958471" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:17:47.958164" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:17:47.958543" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:17:47.958697" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:17:47.957772" elapsed="0.000950"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:47.968619" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:47.968348" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:47.969178" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:47.968895" elapsed="0.000329"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:17:47.975240" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:17:47.971534" elapsed="0.005588">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:47.969294" elapsed="0.007923">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:47.977417" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:47.977253" elapsed="0.000229"/>
</branch>
<status status="FAIL" start="2026-04-17T03:17:47.969275" elapsed="0.008231">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:47.978059" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:47.978224" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:47.978186" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:47.978168" elapsed="0.000119"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:47.978433" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:17:47.978502" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:17:47.961868" elapsed="0.016745">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:47.978702" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:17:47.958936" elapsed="0.019868">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:47.979024" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:17:47.979175" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:47.979139" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:47.979121" elapsed="0.000115"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:47.979432" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:47.979656" elapsed="0.000025"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:17:47.979725" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:17:47.957385" elapsed="0.022442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:17:47.980001" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:17:47.979960" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:47.979942" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:47.980239" elapsed="0.000025"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:17:47.957153" elapsed="0.023165">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:17:47.956942" elapsed="0.023440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:17:47.954658" elapsed="0.025821">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:47.954296" elapsed="0.026241">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:17:47.954267" elapsed="0.026302">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:17:47.980939" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:47.980655" elapsed="0.000350"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:47.980626" elapsed="0.000407"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:17:47.981341" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:47.981126" elapsed="0.000273"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:47.981074" elapsed="0.000348"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:17:47.953705" elapsed="0.027799">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:17:58.042896" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:17:58.042450" elapsed="0.000478"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:17:58.043487" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:17:58.043116" elapsed="0.000399"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:17:58.043563" elapsed="0.000038"/>
</return>
<msg time="2026-04-17T03:17:58.043730" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:17:58.042030" elapsed="0.001725"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:17:58.045285" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:17:58.044959" elapsed="0.000354"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:17:58.045358" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:17:58.045509" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:17:58.044615" elapsed="0.000918"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:58.053333" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:58.053060" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:17:58.054696" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:17:58.054444" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:17:58.060468" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:17:58.057078" elapsed="0.005084">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:58.054808" elapsed="0.007443">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:58.062445" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:58.062285" elapsed="0.000226"/>
</branch>
<status status="FAIL" start="2026-04-17T03:17:58.054790" elapsed="0.007745">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:58.063064" elapsed="0.000058"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:58.063259" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:58.063220" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:58.063180" elapsed="0.000143"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:58.063470" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:17:58.063540" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:17:58.048450" elapsed="0.015201">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:17:58.063724" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:17:58.045742" elapsed="0.018081">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:58.064046" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:17:58.064194" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:17:58.064158" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:58.064139" elapsed="0.000116"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:58.064453" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:58.064673" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:17:58.064740" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:17:58.044239" elapsed="0.020602">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:17:58.064959" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:17:58.064920" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:58.064904" elapsed="0.000148"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:17:58.065214" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:17:58.043996" elapsed="0.021290">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:17:58.043810" elapsed="0.021537">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:17:58.041597" elapsed="0.023845">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:17:58.041212" elapsed="0.024288">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:17:58.041185" elapsed="0.024347">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:17:58.065796" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:58.065599" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:58.065582" elapsed="0.000289"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:17:58.066144" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:17:58.065923" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:17:58.065909" elapsed="0.000319"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:17:58.040667" elapsed="0.025656">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:18:08.085680" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:18:08.085230" elapsed="0.000483"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:18:08.086215" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:18:08.085886" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:18:08.086332" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:18:08.086505" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:18:08.084801" elapsed="0.001730"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:18:08.088047" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:18:08.087746" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:18:08.088148" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:18:08.088301" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:18:08.087400" elapsed="0.000926"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:08.096115" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:08.095845" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:08.096594" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:08.096341" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:18:08.102395" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:18:08.099020" elapsed="0.005028">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:08.096786" elapsed="0.007388">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:08.104367" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:08.104210" elapsed="0.000221"/>
</branch>
<status status="FAIL" start="2026-04-17T03:18:08.096765" elapsed="0.007689">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:08.104972" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:08.105121" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:08.105068" elapsed="0.000096"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:08.105051" elapsed="0.000134"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:08.105330" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:18:08.105400" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:18:08.091144" elapsed="0.014364">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:08.105580" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:18:08.088542" elapsed="0.017137">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:08.105896" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:18:08.106023" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:08.105987" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:08.105970" elapsed="0.000114"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:08.106369" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:08.106589" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:18:08.106657" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:18:08.087006" elapsed="0.019753">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:18:08.106874" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:18:08.106837" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:08.106821" elapsed="0.000113"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:08.107076" elapsed="0.000036"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:18:08.086776" elapsed="0.020419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:18:08.086588" elapsed="0.020669">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:18:08.084380" elapsed="0.022973">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:08.084020" elapsed="0.023392">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:18:08.083993" elapsed="0.023451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:18:08.107709" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:08.107511" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:08.107494" elapsed="0.000291"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:18:08.108047" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:08.107838" elapsed="0.000281"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:08.107823" elapsed="0.000320"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:18:08.083489" elapsed="0.024737">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:18:18.124259" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:18:18.123776" elapsed="0.000517"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:18:18.124816" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:18:18.124484" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:18:18.124891" elapsed="0.000041"/>
</return>
<msg time="2026-04-17T03:18:18.125066" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:18:18.123349" elapsed="0.001757"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:18:18.126735" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:18:18.126422" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:18:18.126809" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:18:18.126960" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:18:18.126004" elapsed="0.000981"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:18.135001" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:18.134735" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:18.135474" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:18.135223" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:18:18.141365" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:18:18.137983" elapsed="0.005131">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:18.135587" elapsed="0.007619">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:18.143408" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:18.143243" elapsed="0.000230"/>
</branch>
<status status="FAIL" start="2026-04-17T03:18:18.135567" elapsed="0.007929">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:18.144033" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:18.144208" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:18.144169" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:18.144149" elapsed="0.000122"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:18.144419" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:18:18.144487" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:18:18.129905" elapsed="0.014695">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:18.144673" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:18:18.127225" elapsed="0.017547">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:18.144995" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:18:18.145189" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:18.145148" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:18.145070" elapsed="0.000180"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:18.145447" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:18.145669" elapsed="0.000062"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:18:18.145785" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:18:18.125599" elapsed="0.020292">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:18:18.146009" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:18:18.145971" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:18.145954" elapsed="0.000113"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:18.146225" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:18:18.125361" elapsed="0.020937">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:18:18.125167" elapsed="0.021191">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:18:18.122882" elapsed="0.023611">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:18.122464" elapsed="0.024089">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:18:18.122436" elapsed="0.024149">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:18:18.146856" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:18.146651" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:18.146635" elapsed="0.000298"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:18:18.147210" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:18.146985" elapsed="0.000282"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:18.146970" elapsed="0.000320"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:18:18.121856" elapsed="0.025516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:18:28.168695" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:18:28.168195" elapsed="0.000539"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:18:28.169403" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:18:28.168941" elapsed="0.000498"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:18:28.169509" elapsed="0.000050"/>
</return>
<msg time="2026-04-17T03:18:28.169698" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:18:28.167714" elapsed="0.002009"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:18:28.171401" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:18:28.171049" elapsed="0.000379"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:18:28.171476" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:18:28.171625" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:18:28.170657" elapsed="0.000992"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:28.179757" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:28.179488" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:28.180229" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:28.179960" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:18:28.185880" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:18:28.182583" elapsed="0.005199">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:28.180342" elapsed="0.007601">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:28.188196" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:28.187983" elapsed="0.000282"/>
</branch>
<status status="FAIL" start="2026-04-17T03:18:28.180323" elapsed="0.007965">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:28.188856" elapsed="0.000033"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:28.189015" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:28.188965" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:28.188947" elapsed="0.000172"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:28.189315" elapsed="0.000025"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:18:28.189423" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:18:28.174566" elapsed="0.014995">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:28.189648" elapsed="0.000019"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:18:28.171871" elapsed="0.017910">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:28.190058" elapsed="0.000031"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:18:28.190220" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:28.190183" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:28.190165" elapsed="0.000130"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:28.190559" elapsed="0.000032"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:28.190848" elapsed="0.000027"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:18:28.190921" elapsed="0.000018"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:18:28.170252" elapsed="0.020799">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:18:28.191274" elapsed="0.000021"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:18:28.191220" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:28.191194" elapsed="0.000166"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:28.191518" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:18:28.169980" elapsed="0.021612">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:18:28.169783" elapsed="0.021872">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:18:28.167243" elapsed="0.024550">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:28.166745" elapsed="0.025122">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:18:28.166710" elapsed="0.025193">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:18:28.192223" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:28.191972" elapsed="0.000308"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:28.191955" elapsed="0.000348"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:18:28.192572" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:28.192357" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:28.192341" elapsed="0.000323"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:18:28.165913" elapsed="0.026851">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:18:38.210258" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:18:38.209642" elapsed="0.000659"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:18:38.210944" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:18:38.210535" elapsed="0.000443"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:18:38.211042" elapsed="0.000068"/>
</return>
<msg time="2026-04-17T03:18:38.211288" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:18:38.209021" elapsed="0.002298"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:18:38.213376" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:18:38.212930" elapsed="0.000482"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:18:38.213471" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:18:38.213659" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:18:38.212478" elapsed="0.001214"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:38.222342" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:38.222034" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:38.222848" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:38.222552" elapsed="0.000341"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:18:38.228934" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:18:38.225253" elapsed="0.005439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:38.222967" elapsed="0.007839">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:38.231125" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:38.230919" elapsed="0.000278"/>
</branch>
<status status="FAIL" start="2026-04-17T03:18:38.222945" elapsed="0.008276">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:38.231912" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:38.232059" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:38.232019" elapsed="0.000129"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:38.232001" elapsed="0.000170"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:38.232322" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:18:38.232393" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:18:38.216680" elapsed="0.015828">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:38.232581" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:18:38.213958" elapsed="0.018727">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:38.232929" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:18:38.233131" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:38.233046" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:38.233021" elapsed="0.000259"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:38.233490" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:38.233711" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:18:38.233777" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:18:38.211951" elapsed="0.021930">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:18:38.234003" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:18:38.233963" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:38.233946" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:38.234225" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:18:38.211638" elapsed="0.022660">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:18:38.211395" elapsed="0.022966">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:18:38.208459" elapsed="0.026031">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:38.207978" elapsed="0.026598">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:18:38.207943" elapsed="0.026722">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:18:38.235007" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:38.234776" elapsed="0.000288"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:38.234751" elapsed="0.000337"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:18:38.235387" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:38.235174" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:38.235158" elapsed="0.000309"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:18:38.207289" elapsed="0.028260">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:18:48.257297" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:18:48.256611" elapsed="0.000721"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:18:48.257833" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:18:48.257514" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:18:48.257910" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:18:48.258105" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:18:48.255982" elapsed="0.002152"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:18:48.259695" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:18:48.259388" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:18:48.259770" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:18:48.259921" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:18:48.259019" elapsed="0.000927"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:48.268086" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:48.267749" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:48.268591" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:48.268336" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:18:48.274892" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:18:48.271271" elapsed="0.005512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:48.268724" elapsed="0.008161">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:48.277217" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:48.276988" elapsed="0.000389"/>
</branch>
<status status="FAIL" start="2026-04-17T03:18:48.268696" elapsed="0.008718">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:48.278050" elapsed="0.000031"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:48.278267" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:48.278223" elapsed="0.000091"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:48.278199" elapsed="0.000138"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:48.278490" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:18:48.278563" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:18:48.262865" elapsed="0.015819">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:48.278759" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:18:48.260181" elapsed="0.018681">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:48.279130" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:18:48.279277" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:48.279239" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:48.279221" elapsed="0.000120"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:48.279546" elapsed="0.000026"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:48.279797" elapsed="0.000025"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:18:48.279867" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:18:48.258632" elapsed="0.021343">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:18:48.280118" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:18:48.280061" elapsed="0.000099"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:48.280041" elapsed="0.000141"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:48.280341" elapsed="0.000025"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:18:48.258389" elapsed="0.022031">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:18:48.258197" elapsed="0.022288">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:18:48.255358" elapsed="0.025231">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:48.254776" elapsed="0.025875">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:18:48.254720" elapsed="0.026000">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:18:48.281025" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:48.280795" elapsed="0.000285"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:48.280778" elapsed="0.000344"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:18:48.281392" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:48.281180" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:48.281163" elapsed="0.000311"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:18:48.253965" elapsed="0.027595">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:18:58.304253" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:18:58.303764" elapsed="0.000523"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:18:58.304788" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:18:58.304474" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:18:58.304863" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:18:58.305038" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:18:58.303330" elapsed="0.001733"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:18:58.306643" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:18:58.306339" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:18:58.306717" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:18:58.306866" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:18:58.305967" elapsed="0.000924"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:58.314856" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:58.314593" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:18:58.315327" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:18:58.315059" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:18:58.322073" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:18:58.317694" elapsed="0.006112">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:58.315442" elapsed="0.008460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:58.324130" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:58.323940" elapsed="0.000259"/>
</branch>
<status status="FAIL" start="2026-04-17T03:18:58.315422" elapsed="0.008801">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:58.324958" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:58.325118" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:58.325062" elapsed="0.000102"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:58.325044" elapsed="0.000141"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:58.325333" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:18:58.325401" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:18:58.309794" elapsed="0.015767">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:18:58.325646" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:18:58.307122" elapsed="0.018633">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:58.326000" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:18:58.326148" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:18:58.326110" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:58.326075" elapsed="0.000135"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:58.326408" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:58.326629" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:18:58.326695" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:18:58.305569" elapsed="0.021228">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:18:58.326918" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:18:58.326879" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:58.326861" elapsed="0.000118"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:18:58.327163" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:18:58.305333" elapsed="0.021902">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:18:58.305140" elapsed="0.022159">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:18:58.302883" elapsed="0.024514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:18:58.302478" elapsed="0.024979">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:18:58.302450" elapsed="0.025056">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:18:58.327813" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:58.327608" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:58.327591" elapsed="0.000299"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:18:58.328169" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:18:58.327943" elapsed="0.000282"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:18:58.327928" elapsed="0.000320"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:18:58.301871" elapsed="0.026461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:19:08.347800" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:19:08.347185" elapsed="0.000659"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:19:08.348533" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:19:08.348084" elapsed="0.000486"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:19:08.348636" elapsed="0.000052"/>
</return>
<msg time="2026-04-17T03:19:08.348888" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:19:08.346594" elapsed="0.002329"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:19:08.351076" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:19:08.350645" elapsed="0.000489"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:19:08.351200" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:19:08.351407" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:19:08.350154" elapsed="0.001287"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:08.360288" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:08.360003" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:08.360741" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:08.360493" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:19:08.366364" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:19:08.363088" elapsed="0.004985">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:08.360876" elapsed="0.007304">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:08.368375" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:08.368217" elapsed="0.000224"/>
</branch>
<status status="FAIL" start="2026-04-17T03:19:08.360857" elapsed="0.007607">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:08.369060" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:08.369277" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:08.369238" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:08.369218" elapsed="0.000123"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:08.369490" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:19:08.369561" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:19:08.354972" elapsed="0.014700">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:08.369749" elapsed="0.000020"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:19:08.351738" elapsed="0.018127">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:08.370148" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:19:08.370282" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:08.370246" elapsed="0.000090"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:08.370229" elapsed="0.000129"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:08.370560" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:08.370795" elapsed="0.000025"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:19:08.370866" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:19:08.349601" elapsed="0.021367">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:19:08.371088" elapsed="0.000032"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:19:08.371049" elapsed="0.000096"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:08.371031" elapsed="0.000136"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:08.371311" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:19:08.349279" elapsed="0.022103">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:19:08.349001" elapsed="0.022444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:19:08.345983" elapsed="0.025559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:08.345499" elapsed="0.026103">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:19:08.345464" elapsed="0.026170">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:19:08.371915" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:08.371702" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:08.371685" elapsed="0.000310"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:19:08.372358" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:08.372135" elapsed="0.000281"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:08.372076" elapsed="0.000364"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:19:08.344768" elapsed="0.027757">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:19:18.393026" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:19:18.392379" elapsed="0.000691"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:19:18.393603" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:19:18.393299" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:19:18.393676" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:19:18.393843" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:19:18.391792" elapsed="0.002076"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:19:18.395400" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:19:18.395081" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:19:18.395489" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:19:18.395635" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:19:18.394736" elapsed="0.000924"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:18.403521" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:18.403259" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:18.403964" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:18.403722" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:19:18.409709" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:19:18.406304" elapsed="0.005088">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:18.404073" elapsed="0.007409">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:18.411676" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:18.411516" elapsed="0.000225"/>
</branch>
<status status="FAIL" start="2026-04-17T03:19:18.404054" elapsed="0.007711">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:18.412328" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:18.412466" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:18.412428" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:18.412410" elapsed="0.000221"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:18.412781" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:19:18.412851" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:19:18.398487" elapsed="0.014474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:18.413032" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:19:18.395871" elapsed="0.017278">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:18.413371" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:19:18.413498" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:18.413462" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:18.413445" elapsed="0.000115"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:18.413758" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:18.413977" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:19:18.414043" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:19:18.394360" elapsed="0.019799">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:19:18.414279" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:19:18.414240" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:18.414223" elapsed="0.000116"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:18.414480" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:19:18.394127" elapsed="0.020423">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:19:18.393926" elapsed="0.020687">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:19:18.391214" elapsed="0.023497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:18.390724" elapsed="0.024048">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:19:18.390688" elapsed="0.024115">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:19:18.415067" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:18.414869" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:18.414853" elapsed="0.000306"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:19:18.415420" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:18.415212" elapsed="0.000296"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:18.415197" elapsed="0.000335"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:19:18.389997" elapsed="0.025618">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:19:28.432918" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:19:28.432456" elapsed="0.000494"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:19:28.433455" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:19:28.433143" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:19:28.433530" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:19:28.433716" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:19:28.431988" elapsed="0.001763"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:19:28.435489" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:19:28.435082" elapsed="0.000437"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:19:28.435566" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:19:28.435717" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:19:28.434731" elapsed="0.001010"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:28.443741" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:28.443403" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:28.444216" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:28.443950" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:19:28.450088" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:19:28.446543" elapsed="0.005247">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:28.444329" elapsed="0.007550">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:28.452081" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:28.451913" elapsed="0.000269"/>
</branch>
<status status="FAIL" start="2026-04-17T03:19:28.444310" elapsed="0.007896">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:28.452737" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:28.452874" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:28.452836" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:28.452819" elapsed="0.000119"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:28.453084" elapsed="0.000040"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:19:28.453233" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:19:28.438616" elapsed="0.014731">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:28.453422" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:19:28.435958" elapsed="0.017565">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:28.453751" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:19:28.453881" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:28.453844" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:28.453827" elapsed="0.000117"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:28.454161" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:28.454390" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:19:28.454459" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:19:28.434334" elapsed="0.020228">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:19:28.454682" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:19:28.454644" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:28.454627" elapsed="0.000114"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:28.454884" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:19:28.434073" elapsed="0.020883">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:19:28.433830" elapsed="0.021187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:19:28.431527" elapsed="0.023603">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:28.431096" elapsed="0.024098">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:19:28.431066" elapsed="0.024160">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:19:28.455493" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:28.455292" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:28.455276" elapsed="0.000301"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:19:28.455875" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:28.455661" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:28.455645" elapsed="0.000323"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:19:28.430547" elapsed="0.025537">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:19:38.476516" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:19:38.475887" elapsed="0.000673"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:19:38.477255" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:19:38.476800" elapsed="0.000493"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:19:38.477361" elapsed="0.000049"/>
</return>
<msg time="2026-04-17T03:19:38.477592" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:19:38.475315" elapsed="0.002313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:19:38.480071" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:19:38.479674" elapsed="0.000443"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:19:38.480167" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:19:38.480322" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:19:38.479019" elapsed="0.001332"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:38.488430" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:38.488165" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:38.488879" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:38.488633" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:19:38.494671" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:19:38.491232" elapsed="0.005427">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:38.488990" elapsed="0.007770">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:38.497208" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:38.496798" elapsed="0.000480"/>
</branch>
<status status="FAIL" start="2026-04-17T03:19:38.488971" elapsed="0.008330">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:38.497866" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:38.498013" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:38.497973" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:38.497954" elapsed="0.000123"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:38.498242" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:19:38.498312" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:19:38.483260" elapsed="0.015233">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:38.498567" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:19:38.480578" elapsed="0.018089">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:38.498892" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:19:38.499020" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:38.498983" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:38.498966" elapsed="0.000114"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:38.499297" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:38.499534" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:19:38.499602" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:19:38.478371" elapsed="0.021330">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:19:38.499822" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:19:38.499782" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:38.499766" elapsed="0.000116"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:38.500025" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:19:38.477966" elapsed="0.022158">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:19:38.477706" elapsed="0.022484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:19:38.474693" elapsed="0.025596">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:38.474217" elapsed="0.026132">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:19:38.474183" elapsed="0.026198">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:19:38.500651" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:38.500449" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:38.500432" elapsed="0.000298"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:19:38.500997" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:38.500784" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:38.500769" elapsed="0.000309"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:19:38.473499" elapsed="0.027711">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:19:48.520050" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:19:48.519576" elapsed="0.000508"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:19:48.520578" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:19:48.520274" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:19:48.520652" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:19:48.520819" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:19:48.519126" elapsed="0.001718"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:19:48.522380" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:19:48.522063" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:19:48.522453" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:19:48.522598" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:19:48.521718" elapsed="0.000904"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:48.530482" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:48.530216" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:48.530927" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:48.530684" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:19:48.536803" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:19:48.533257" elapsed="0.005214">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:48.531038" elapsed="0.007521">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:48.538748" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:48.538592" elapsed="0.000221"/>
</branch>
<status status="FAIL" start="2026-04-17T03:19:48.531019" elapsed="0.007817">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:48.539411" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:48.539545" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:48.539508" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:48.539491" elapsed="0.000118"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:48.539753" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:19:48.539822" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:19:48.525438" elapsed="0.014492">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:48.540065" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:19:48.522834" elapsed="0.017350">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:48.540406" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:19:48.540533" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:48.540497" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:48.540480" elapsed="0.000112"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:48.540786" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:48.541002" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:19:48.541068" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:19:48.521341" elapsed="0.019843">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:19:48.541301" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:19:48.541263" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:48.541245" elapsed="0.000115"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:48.541500" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:19:48.521100" elapsed="0.020469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:19:48.520900" elapsed="0.020729">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:19:48.518685" elapsed="0.023040">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:48.518337" elapsed="0.023446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:19:48.518309" elapsed="0.023505">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:19:48.542075" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:48.541880" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:48.541864" elapsed="0.000308"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:19:48.542430" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:48.542224" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:48.542209" elapsed="0.000299"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:19:48.517737" elapsed="0.024850">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:19:58.563203" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:19:58.562593" elapsed="0.000655"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:19:58.563907" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:19:58.563490" elapsed="0.000454"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:19:58.564010" elapsed="0.000057"/>
</return>
<msg time="2026-04-17T03:19:58.564262" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:19:58.561981" elapsed="0.002316"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:19:58.566671" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:19:58.566215" elapsed="0.000499"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:19:58.566785" elapsed="0.000049"/>
</return>
<msg time="2026-04-17T03:19:58.567014" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:19:58.565675" elapsed="0.001378"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:58.577781" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:58.577359" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:19:58.578302" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:19:58.578017" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:19:58.586031" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:19:58.581041" elapsed="0.007886">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:58.578437" elapsed="0.010675">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:58.589556" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:58.589184" elapsed="0.000479"/>
</branch>
<status status="FAIL" start="2026-04-17T03:19:58.578410" elapsed="0.011291">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:58.590659" elapsed="0.000046"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:58.590894" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:58.590826" elapsed="0.000141"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:58.590793" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:58.591282" elapsed="0.000033"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:19:58.591382" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:19:58.571390" elapsed="0.020170">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:19:58.591780" elapsed="0.000027"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:19:58.567435" elapsed="0.024508">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:58.592351" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:19:58.592558" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:19:58.592500" elapsed="0.000123"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:58.592472" elapsed="0.000187"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:58.592955" elapsed="0.000041"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:58.593370" elapsed="0.000086"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:19:58.593523" elapsed="0.000024"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:19:58.564994" elapsed="0.028697">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:19:58.593879" elapsed="0.000026"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:19:58.593818" elapsed="0.000126"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:58.593790" elapsed="0.000188"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:19:58.594227" elapsed="0.000034"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:19:58.564663" elapsed="0.029680">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:19:58.564375" elapsed="0.030069">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:19:58.561305" elapsed="0.033298">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:19:58.560660" elapsed="0.034041">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:19:58.560620" elapsed="0.034133">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:19:58.595217" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:58.594863" elapsed="0.000443"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:58.594837" elapsed="0.000508"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:19:58.595763" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:19:58.595433" elapsed="0.000417"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:19:58.595407" elapsed="0.000481"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:19:58.559800" elapsed="0.036220">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:20:08.613494" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:20:08.612922" elapsed="0.000604"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:20:08.614014" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:20:08.613701" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:20:08.614093" elapsed="0.000058"/>
</return>
<msg time="2026-04-17T03:20:08.614284" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:20:08.612496" elapsed="0.001814"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:20:08.615891" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:20:08.615555" elapsed="0.000367"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:20:08.615969" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:20:08.616134" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:20:08.615203" elapsed="0.000957"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:08.624128" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:08.623843" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:08.624588" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:08.624339" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:20:08.630245" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:20:08.626906" elapsed="0.005137">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:08.624702" elapsed="0.007466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:08.632371" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:08.632207" elapsed="0.000229"/>
</branch>
<status status="FAIL" start="2026-04-17T03:20:08.624682" elapsed="0.007777">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:08.633015" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:08.633194" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:08.633154" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:08.633134" elapsed="0.000125"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:08.633407" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:20:08.633477" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:20:08.618977" elapsed="0.014616">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:08.633666" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:20:08.616378" elapsed="0.017389">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:08.634056" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:20:08.634209" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:08.634171" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:08.634153" elapsed="0.000118"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:08.634471" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:08.634699" elapsed="0.000026"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:20:08.634794" elapsed="0.000019"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:20:08.614796" elapsed="0.020114">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:20:08.635033" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:20:08.634993" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:08.634976" elapsed="0.000122"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:08.635263" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:20:08.614558" elapsed="0.020780">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:20:08.614368" elapsed="0.021035">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:20:08.612029" elapsed="0.023474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:08.611515" elapsed="0.024052">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:20:08.611488" elapsed="0.024111">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:20:08.635883" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:08.635668" elapsed="0.000304"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:08.635651" elapsed="0.000344"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:20:08.636305" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:08.636051" elapsed="0.000314"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:08.636034" elapsed="0.000354"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:20:08.610916" elapsed="0.025559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:20:18.656902" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:20:18.656414" elapsed="0.000521"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:20:18.657559" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:20:18.657237" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:20:18.657639" elapsed="0.000040"/>
</return>
<msg time="2026-04-17T03:20:18.657826" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:20:18.655954" elapsed="0.001898"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:20:18.659544" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:20:18.659217" elapsed="0.000355"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:20:18.659619" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:20:18.659777" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:20:18.658803" elapsed="0.000999"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:18.668025" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:18.667731" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:18.668759" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:18.668302" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:20:18.674770" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:20:18.671252" elapsed="0.005249">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:18.668903" elapsed="0.007687">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:18.676800" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:18.676626" elapsed="0.000252"/>
</branch>
<status status="FAIL" start="2026-04-17T03:20:18.668881" elapsed="0.008027">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:18.677489" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:18.677626" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:18.677590" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:18.677573" elapsed="0.000117"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:18.677836" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:20:18.677904" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:20:18.662686" elapsed="0.015329">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:18.678087" elapsed="0.000074"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:20:18.660018" elapsed="0.018233">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:18.678565" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:20:18.678699" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:18.678662" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:18.678644" elapsed="0.000116"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:18.678961" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:18.679265" elapsed="0.000025"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:20:18.679335" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:20:18.658362" elapsed="0.021076">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:20:18.679557" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:20:18.679519" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:18.679502" elapsed="0.000113"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:18.679761" elapsed="0.000020"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:20:18.658123" elapsed="0.021708">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:20:18.657913" elapsed="0.021979">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:20:18.655503" elapsed="0.024486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:18.654993" elapsed="0.025056">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:20:18.654963" elapsed="0.025117">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:20:18.680365" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:18.680164" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:18.680147" elapsed="0.000294"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:20:18.680703" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:18.680494" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:18.680478" elapsed="0.000304"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:20:18.654373" elapsed="0.026490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:20:28.702080" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:20:28.701536" elapsed="0.000597"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:20:28.702650" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:20:28.702313" elapsed="0.000365"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:20:28.702726" elapsed="0.000040"/>
</return>
<msg time="2026-04-17T03:20:28.702991" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:20:28.701077" elapsed="0.001940"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:20:28.704601" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:20:28.704294" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:20:28.704675" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:20:28.704821" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:20:28.703923" elapsed="0.000923"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:28.712760" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:28.712495" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:28.713229" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:28.712965" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:20:28.719135" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:20:28.715591" elapsed="0.005239">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:28.713342" elapsed="0.007579">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:28.721140" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:28.720955" elapsed="0.000253"/>
</branch>
<status status="FAIL" start="2026-04-17T03:20:28.713323" elapsed="0.007909">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:28.721940" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:28.722077" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:28.722039" elapsed="0.000124"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:28.722021" elapsed="0.000180"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:28.722356" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:20:28.722428" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:20:28.707671" elapsed="0.014870">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:28.722615" elapsed="0.000060"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:20:28.705061" elapsed="0.017709">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:28.722997" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:20:28.723184" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:28.723146" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:28.723126" elapsed="0.000121"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:28.723448" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:28.723690" elapsed="0.000035"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:20:28.723776" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:20:28.703520" elapsed="0.020369">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:20:28.724014" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:20:28.723975" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:28.723958" elapsed="0.000116"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:28.724235" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:20:28.703283" elapsed="0.021024">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:20:28.703075" elapsed="0.021294">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:20:28.700651" elapsed="0.023815">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:28.700295" elapsed="0.024229">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:20:28.700268" elapsed="0.024287">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:20:28.724821" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:28.724621" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:28.724605" elapsed="0.000292"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:20:28.725187" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:28.724949" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:28.724934" elapsed="0.000333"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:20:28.699753" elapsed="0.025595">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:20:38.744002" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:20:38.743554" elapsed="0.000480"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:20:38.744537" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:20:38.744225" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:20:38.744613" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:20:38.744780" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:20:38.743124" elapsed="0.001681"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:20:38.746477" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:20:38.746170" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:20:38.746551" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:20:38.746701" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:20:38.745798" elapsed="0.000928"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:38.754764" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:38.754496" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:38.755242" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:38.754972" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:20:38.761407" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:20:38.757663" elapsed="0.005498">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:38.755357" elapsed="0.007899">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:38.763452" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:38.763292" elapsed="0.000236"/>
</branch>
<status status="FAIL" start="2026-04-17T03:20:38.755337" elapsed="0.008217">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:38.764134" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:38.764274" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:38.764236" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:38.764218" elapsed="0.000118"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:38.764482" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:20:38.764552" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:20:38.749682" elapsed="0.014981">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:38.764738" elapsed="0.000021"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:20:38.746940" elapsed="0.017920">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:38.765166" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:20:38.765317" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:38.765276" elapsed="0.000091"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:38.765254" elapsed="0.000135"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:38.765635" elapsed="0.000030"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:38.765957" elapsed="0.000031"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:20:38.766042" elapsed="0.000019"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:20:38.745411" elapsed="0.020765">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:20:38.766300" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:20:38.766261" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:38.766243" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:38.766507" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:20:38.745172" elapsed="0.021410">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:20:38.744935" elapsed="0.021710">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:20:38.742687" elapsed="0.024065">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:38.742340" elapsed="0.024478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:20:38.742313" elapsed="0.024552">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:20:38.767207" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:38.766967" elapsed="0.000296"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:38.766945" elapsed="0.000342"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:20:38.767551" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:38.767341" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:38.767325" elapsed="0.000306"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:20:38.741731" elapsed="0.025984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:20:48.787198" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:20:48.786697" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:20:48.787719" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:20:48.787408" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:20:48.787806" elapsed="0.000040"/>
</return>
<msg time="2026-04-17T03:20:48.787979" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:20:48.786246" elapsed="0.001758"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:20:48.789681" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:20:48.789354" elapsed="0.000356"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:20:48.789762" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:20:48.789919" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:20:48.788902" elapsed="0.001042"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:48.798005" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:48.797726" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:48.798525" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:48.798239" elapsed="0.000330"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:20:48.804475" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:20:48.800895" elapsed="0.005315">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:48.798640" elapsed="0.007666">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:48.806589" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:48.806424" elapsed="0.000231"/>
</branch>
<status status="FAIL" start="2026-04-17T03:20:48.798620" elapsed="0.008058">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:48.807227" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:48.807366" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:48.807330" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:48.807312" elapsed="0.000118"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:48.807573" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:20:48.807641" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:20:48.792867" elapsed="0.014885">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:48.807823" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:20:48.790178" elapsed="0.017741">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:48.808153" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:20:48.808281" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:48.808244" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:48.808227" elapsed="0.000118"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:48.808538" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:48.808798" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:20:48.808866" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:20:48.788510" elapsed="0.020457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:20:48.809100" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:20:48.809047" elapsed="0.000095"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:48.809031" elapsed="0.000132"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:48.809303" elapsed="0.000020"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:20:48.788275" elapsed="0.021097">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:20:48.788063" elapsed="0.021369">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:20:48.785794" elapsed="0.023735">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:48.785402" elapsed="0.024187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:20:48.785375" elapsed="0.024246">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:20:48.809886" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:48.809688" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:48.809672" elapsed="0.000291"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:20:48.810283" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:48.810016" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:48.810001" elapsed="0.000387"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:20:48.784839" elapsed="0.025631">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:20:58.832611" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:20:58.831551" elapsed="0.001118"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:20:58.833187" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:20:58.832849" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:20:58.833265" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:20:58.833441" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:20:58.830626" elapsed="0.002841"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:20:58.835030" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:20:58.834722" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:20:58.835202" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:20:58.835356" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:20:58.834368" elapsed="0.001013"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:58.843440" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:58.843154" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:20:58.843971" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:20:58.843714" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:20:58.849870" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:20:58.846338" elapsed="0.005235">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:58.844107" elapsed="0.007612">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:58.851920" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:58.851756" elapsed="0.000231"/>
</branch>
<status status="FAIL" start="2026-04-17T03:20:58.844068" elapsed="0.007942">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:58.852593" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:58.852738" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:58.852698" elapsed="0.000084"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:58.852679" elapsed="0.000124"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:58.852949" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:20:58.853019" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:20:58.838276" elapsed="0.014895">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:20:58.853245" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:20:58.835626" elapsed="0.017721">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:58.853575" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:20:58.853704" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:20:58.853668" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:58.853651" elapsed="0.000113"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:58.853960" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:58.854195" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:20:58.854315" elapsed="0.000017"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:20:58.833967" elapsed="0.020454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:20:58.854544" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:20:58.854503" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:58.854486" elapsed="0.000118"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:20:58.854745" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:20:58.833729" elapsed="0.021087">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:20:58.833528" elapsed="0.021351">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:20:58.829670" elapsed="0.025307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:20:58.828840" elapsed="0.026196">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:20:58.828786" elapsed="0.026282">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:20:58.855360" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:58.855153" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:58.855136" elapsed="0.000301"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:20:58.855724" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:20:58.855490" elapsed="0.000290"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:20:58.855475" elapsed="0.000328"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:20:58.828167" elapsed="0.027719">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:08.874204" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:08.873732" elapsed="0.000504"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:08.874716" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:08.874409" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:08.874790" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:21:08.874954" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:08.873254" elapsed="0.001725"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:08.876520" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:21:08.876217" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:21:08.876595" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:21:08.876741" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:08.875854" elapsed="0.000988"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:08.887611" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:08.887308" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:08.888066" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:08.887821" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:08.893879" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:08.890429" elapsed="0.005155">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:08.888199" elapsed="0.007474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:08.895871" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:08.895708" elapsed="0.000228"/>
</branch>
<status status="FAIL" start="2026-04-17T03:21:08.888181" elapsed="0.007778">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:08.896528" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:08.896669" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:08.896629" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:08.896612" elapsed="0.000121"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:08.896879" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:21:08.896949" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:21:08.881955" elapsed="0.015103">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:08.897168" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:21:08.877060" elapsed="0.020209">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:08.897492" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:21:08.897620" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:08.897583" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:08.897566" elapsed="0.000115"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:08.897878" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:08.898155" elapsed="0.000026"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:21:08.898225" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:21:08.875473" elapsed="0.022854">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:21:08.898495" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:21:08.898456" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:08.898438" elapsed="0.000116"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:08.898698" elapsed="0.000020"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:21:08.875238" elapsed="0.023530">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:21:08.875036" elapsed="0.023793">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:21:08.872722" elapsed="0.026204">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:08.872368" elapsed="0.026618">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:21:08.872342" elapsed="0.026676">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:21:08.899306" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:08.899084" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:08.899068" elapsed="0.000316"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:21:08.899647" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:08.899438" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:08.899422" elapsed="0.000304"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:21:08.871818" elapsed="0.027990">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:18.917677" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:18.917223" elapsed="0.000486"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:18.918212" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:18.917884" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:18.918288" elapsed="0.000038"/>
</return>
<msg time="2026-04-17T03:21:18.918456" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:18.916775" elapsed="0.001707"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:18.920045" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:21:18.919739" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:21:18.920136" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:21:18.920286" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:18.919388" elapsed="0.000923"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:18.928304" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:18.928020" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:18.928758" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:18.928510" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:18.934464" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:18.931073" elapsed="0.005103">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:18.928870" elapsed="0.007395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:18.936459" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:18.936301" elapsed="0.000225"/>
</branch>
<status status="FAIL" start="2026-04-17T03:21:18.928851" elapsed="0.007698">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:18.937081" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:18.937255" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:18.937216" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:18.937198" elapsed="0.000121"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:18.937466" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:21:18.937535" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:21:18.923229" elapsed="0.014415">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:18.937717" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:21:18.920526" elapsed="0.017291">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:18.938041" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:21:18.938189" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:18.938152" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:18.938135" elapsed="0.000116"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:18.938450" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:18.938671" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:21:18.938738" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:21:18.918959" elapsed="0.019881">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:21:18.939004" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:21:18.938964" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:18.938946" elapsed="0.000118"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:18.939226" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:21:18.918727" elapsed="0.020571">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:21:18.918538" elapsed="0.020839">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:21:18.916349" elapsed="0.023126">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:18.915921" elapsed="0.023614">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:21:18.915893" elapsed="0.023675">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:21:18.939843" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:18.939636" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:18.939619" elapsed="0.000302"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:21:18.940206" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:18.939976" elapsed="0.000287"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:18.939960" elapsed="0.000327"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:21:18.915349" elapsed="0.025026">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.959444" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:28.958896" elapsed="0.000582"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.960007" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:28.959675" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:28.960108" elapsed="0.000045"/>
</return>
<msg time="2026-04-17T03:21:28.960295" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:28.958428" elapsed="0.001893"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.962017" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:21:28.961678" elapsed="0.000372"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:21:28.962115" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:21:28.962274" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:28.961285" elapsed="0.001013"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.970762" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:28.970410" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.971396" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:28.971109" elapsed="0.000334"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:28.977769" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:28.973847" elapsed="0.005899">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:28.971520" elapsed="0.008329">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.980109" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:28.979888" elapsed="0.000295"/>
</branch>
<status status="FAIL" start="2026-04-17T03:21:28.971498" elapsed="0.008709">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.980805" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:28.980957" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:28.980915" elapsed="0.000088"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:28.980894" elapsed="0.000138"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.981202" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:21:28.981275" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:21:28.965416" elapsed="0.015980">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:28.981471" elapsed="0.000018"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-17T03:21:28.962520" elapsed="0.019053">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.981808" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-17T03:21:28.981946" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:28.981906" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:28.981886" elapsed="0.000126"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.982288" elapsed="0.000033"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.982563" elapsed="0.000027"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-17T03:21:28.982635" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-17T03:21:28.960845" elapsed="0.021948">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-17T03:21:28.982927" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-17T03:21:28.982885" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:28.982865" elapsed="0.000181"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.983246" elapsed="0.000024"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-17T03:21:28.960594" elapsed="0.022730">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-17T03:21:28.960381" elapsed="0.023011">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-17T03:21:28.957947" elapsed="0.025550">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:28.957490" elapsed="0.026068">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-17T03:21:28.957458" elapsed="0.026134">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-17T03:21:28.983873" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:28.983662" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:28.983645" elapsed="0.000308"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.984261" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:28.984010" elapsed="0.000312"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:28.983992" elapsed="0.000354"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-17T03:21:28.956823" elapsed="0.027610">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:28.984551" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:15:27.321575" elapsed="361.663079">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.988697" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:28.988228" elapsed="0.000497"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.989264" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:28.988889" elapsed="0.000403"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:28.989340" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:21:28.989513" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:28.987752" elapsed="0.001786"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:28.990821" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:28.990489" elapsed="0.000369"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:28.991803" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:28.991917" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:28.991624" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:28.994954" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:28.994588" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:28.994558" elapsed="0.000483"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:28.995355" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:28.995461" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:28.995212" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.996177" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:28.995642" elapsed="0.000586"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:28.996837" level="INFO">${conn_id} = 29</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:28.996393" elapsed="0.000471"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:21:28.998004" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:21:28.998119" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:21:28.997595" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:28.998312" elapsed="0.000599"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:21:29.000756" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:21:29.699789" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:21:29 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:27 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:21:28.999927" elapsed="0.700116"/>
</kw>
<msg time="2026-04-17T03:21:29.700202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:28.999105" elapsed="0.701236"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:21:28.997110" elapsed="0.703360"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:21:29.701022" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-17T03:21:29.713943" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:21:29.714247" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:21:29.714355" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:21:29.700741" elapsed="0.013672"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:29.714833" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.716630" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:29.715823" elapsed="0.000921"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:21:29.717282" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:29.716927" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:29.716875" elapsed="0.000579"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:21:29.717838" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-17T03:21:29.717583" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:29.717546" elapsed="0.000493"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:21:29.718316" elapsed="0.000041"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:29.723795" elapsed="0.000859"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:29.724915" elapsed="0.000267"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:29.725408" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:29.719126" elapsed="0.006511"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:21:28.993913" elapsed="0.731862"/>
</kw>
<msg time="2026-04-17T03:21:29.725859" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:28.993317" elapsed="0.732641"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:21:28.992699" elapsed="0.733378"/>
</kw>
<msg time="2026-04-17T03:21:29.726182" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:28.992151" elapsed="0.734120"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:29.730211" elapsed="0.000318"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:29.730697" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:29.730994" elapsed="0.000129"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:29.726721" elapsed="0.004457"/>
</kw>
<msg time="2026-04-17T03:21:29.731274" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:21:28.991167" elapsed="0.740132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.731755" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:29.731504" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:21:29.731842" elapsed="0.000051"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:21:28.989955" elapsed="0.742037"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:28.989758" elapsed="0.742272"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:21:28.989595" elapsed="0.742471"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:21:28.984981" elapsed="0.747158"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-17T03:15:26.929031" elapsed="362.803196">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>300s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:29.732406" elapsed="0.000023"/>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>ps -ef | grep java</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:29.732671" elapsed="0.000028"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:15:26.924260" elapsed="362.808587">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:21:29.733338" elapsed="0.000126"/>
</kw>
<doc>Set tell-based protocol usage

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

Suite stops all odl nodes, un-comment usage of tell-based protocol in
config file (means make it true) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-17T03:15:21.538757" elapsed="368.194742"/>
</suite>
<suite id="s1-s8" name="Singlepeer Pc Shm 300Kroutes" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot">
<kw name="Setup_Everything" owner="PrefixcountKeywords" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.830924" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:29.826302" elapsed="0.004678"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:21:29.826026" elapsed="0.005027"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.836401" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:21:29.832254" elapsed="0.004175"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:29.836645" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:29.836518" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:29.836492" elapsed="0.000229"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.837262" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:29.836891" elapsed="0.000415"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.837793" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:21:29.837482" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:21:29.838381" elapsed="0.000304"/>
</kw>
<msg time="2026-04-17T03:21:29.838784" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:29.838831" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:29.837998" elapsed="0.000856"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.839448" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:29.839037" elapsed="0.000437"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.840663" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:29.840393" elapsed="0.000297"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.841262" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:29.840854" elapsed="0.000434"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.841761" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:21:29.841470" elapsed="0.000317"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:21:29.845292" elapsed="0.000218"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.846010" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:21:29.845685" elapsed="0.000351"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:29.846221" elapsed="0.000235"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.847295" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:21:29.846982" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:21:29.847368" elapsed="0.000040"/>
</return>
<msg time="2026-04-17T03:21:29.847531" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:29.846670" elapsed="0.000885"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:29.848202" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78544129e650&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:21:29.847727" elapsed="0.000622"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:21:29.848525" elapsed="0.000192"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:21:29.844699" elapsed="0.004076"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:29.844491" elapsed="0.004328"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:21:29.841846" elapsed="0.007006"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.849452" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:29.849034" elapsed="0.000533"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.850250" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:29.849753" elapsed="0.000541"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.850857" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:29.850471" elapsed="0.000428"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:21:29.839753" elapsed="0.011203"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:21:29.831831" elapsed="0.019180"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:29.851210" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:29.851078" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:29.851060" elapsed="0.000217"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.854563" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:29.854183" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.855061" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:29.854764" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:29.855148" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:21:29.855302" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:29.853825" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:29.856376" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:29.856107" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:29.857180" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:29.857282" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:29.857005" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:29.860938" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:29.860360" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:29.860339" elapsed="0.000724"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:29.861732" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:29.861961" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:29.861295" elapsed="0.000717"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.862966" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:29.862310" elapsed="0.000759"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:29.864280" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:29.863367" elapsed="0.000963"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:21:29.866048" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:21:29.866248" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:21:29.865693" elapsed="0.000598"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:29.866641" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:21:29.868379" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:21:30.174200" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:21:29 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:21:29 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:21:29.868025" elapsed="0.306371"/>
</kw>
<msg time="2026-04-17T03:21:30.174510" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:29.867560" elapsed="0.307163"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:21:29.864779" elapsed="0.310152"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:21:30.176235" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:21:30.189227" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:21:30.189483" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:21:30.189632" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:21:30.175519" elapsed="0.014187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:30.190242" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:30.193026" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:30.192123" elapsed="0.001085"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:21:30.193899" elapsed="0.000108"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:30.193454" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:30.193418" elapsed="0.000880"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:21:30.194967" elapsed="0.000172"/>
</return>
<status status="PASS" start="2026-04-17T03:21:30.194474" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:30.194436" elapsed="0.000994"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:21:30.195561" elapsed="0.000037"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:30.202785" elapsed="0.000505"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:30.203586" elapsed="0.000291"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:30.204196" elapsed="0.000221"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:30.196798" elapsed="0.007690"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:21:29.859388" elapsed="0.345299"/>
</kw>
<msg time="2026-04-17T03:21:30.204745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:29.858529" elapsed="0.346271"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:21:29.858011" elapsed="0.346868"/>
</kw>
<msg time="2026-04-17T03:21:30.204921" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:29.857477" elapsed="0.347489"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:30.207929" elapsed="0.000342"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:30.208455" elapsed="0.000198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:30.208883" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:30.205291" elapsed="0.003744"/>
</kw>
<msg time="2026-04-17T03:21:30.209145" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:21:29.856633" elapsed="0.352539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:30.209619" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:30.209369" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:21:30.209706" elapsed="0.000032"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:21:29.855700" elapsed="0.354133"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:29.855505" elapsed="0.354366"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:21:29.855377" elapsed="0.354530"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:21:29.851510" elapsed="0.358455"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:21:30.210151" elapsed="0.000215"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:30.225206" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:30.225068" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:30.225048" elapsed="0.000226"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:30.225577" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:30.225681" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:30.225442" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:30.226146" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:30.225870" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:30.226601" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:30.226358" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:30.227459" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:21:30.227204" elapsed="0.000369">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:21:30.227679" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:30.227729" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:30.226815" elapsed="0.000936"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:30.228081" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:30.227828" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:30.227807" elapsed="0.000392"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:30.229003" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:30.228728" elapsed="0.000309"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:30.229117" elapsed="0.000041"/>
</return>
<msg time="2026-04-17T03:21:30.229295" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:30.228417" elapsed="0.000902"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:30.229490" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:30.230216" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:30.230320" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:30.230077" elapsed="0.000269"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:30.230510" elapsed="0.002688"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:30.233749" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:30.234725" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:30.233406" elapsed="0.001803">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:30.238517" elapsed="0.000386"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:30.239145" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:30.239520" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:30.236052" elapsed="0.003636"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:30.235511" elapsed="0.004226"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:30.224785" elapsed="0.015038">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:31.260363" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:31.260215" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:31.260185" elapsed="0.000267"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:31.260851" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:31.260967" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:31.260665" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:31.261494" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:31.261186" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:31.261967" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:31.261711" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:31.262692" elapsed="0.000204"/>
</kw>
<msg time="2026-04-17T03:21:31.262998" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:31.263051" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:31.262237" elapsed="0.000842"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:31.264006" elapsed="0.000170"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:31.264959" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:31.264763" elapsed="0.000821">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:31.264382" elapsed="0.001268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:31.266306" elapsed="0.000109"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:31.265853" elapsed="0.000610"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:31.263441" elapsed="0.003066"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:31.263184" elapsed="0.003384"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:31.263163" elapsed="0.003437"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:31.267476" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:31.267200" elapsed="0.000303"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:31.267552" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:21:31.267719" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:31.266873" elapsed="0.000891"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:31.268071" elapsed="0.000473"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:31.268945" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:31.269061" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:31.268823" elapsed="0.000283"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:31.269278" elapsed="0.002713"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:31.272458" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:31.273944" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:31.272190" elapsed="0.002238">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:31.277692" elapsed="0.000416"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:31.278293" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:31.278615" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:31.275314" elapsed="0.003457"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:31.274746" elapsed="0.004075"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:31.259769" elapsed="0.019145">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:32.299035" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:32.298881" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:32.298852" elapsed="0.000291"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:32.299637" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:32.299764" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:32.299428" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:32.300320" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:32.299982" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:32.300831" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:32.300570" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:32.301548" elapsed="0.000200"/>
</kw>
<msg time="2026-04-17T03:21:32.301850" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:32.301896" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:32.301060" elapsed="0.000859"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:32.302898" elapsed="0.000149"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:32.303860" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:32.303671" elapsed="0.000738">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:32.303260" elapsed="0.001214"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:32.305087" elapsed="0.000125"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:32.304698" elapsed="0.000562"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:32.302271" elapsed="0.003034"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:32.301998" elapsed="0.003440"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:32.301978" elapsed="0.003486"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:32.306312" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:32.306020" elapsed="0.000319"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:32.306389" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:21:32.306552" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:32.305710" elapsed="0.000867"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:32.306748" elapsed="0.000434"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:32.307551" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:32.307667" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:32.307419" elapsed="0.000276"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:32.307861" elapsed="0.002708"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:32.311017" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:32.312246" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:32.310749" elapsed="0.001898">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:32.316016" elapsed="0.000381"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:32.316577" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:32.316896" elapsed="0.000099"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:32.313570" elapsed="0.003477"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:32.312976" elapsed="0.004132"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:32.298431" elapsed="0.018767">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.337235" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:33.337036" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.337000" elapsed="0.000337"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.337851" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:33.337996" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.337620" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.338651" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:33.338276" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.339255" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:33.338929" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.340083" elapsed="0.000254"/>
</kw>
<msg time="2026-04-17T03:21:33.340460" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:33.340539" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.339542" elapsed="0.001027"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:33.341698" elapsed="0.000171"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.342940" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.342713" elapsed="0.000892">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.342125" elapsed="0.001560"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.344378" elapsed="0.000167"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.343923" elapsed="0.000683"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:33.340988" elapsed="0.003677"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:33.340671" elapsed="0.004060"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.340645" elapsed="0.004119"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:33.345846" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.345496" elapsed="0.000384"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:33.345945" elapsed="0.000046"/>
</return>
<msg time="2026-04-17T03:21:33.346164" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:33.345073" elapsed="0.001122"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.346418" elapsed="0.000529"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.347353" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:33.347480" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.347207" elapsed="0.000305"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.347725" elapsed="0.003654"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.351993" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:33.353234" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.351639" elapsed="0.002154">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:33.358392" elapsed="0.000507"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.359169" elapsed="0.000209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.359593" elapsed="0.000128"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:33.355027" elapsed="0.004761"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:33.354261" elapsed="0.005587"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.336157" elapsed="0.023805">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:21:33.360083" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:21:30.211146" elapsed="3.149080">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:30.210733" elapsed="3.149577"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:30.210576" elapsed="3.149788"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:21:30.210423" elapsed="3.149986"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:21:29.831375" elapsed="3.529110"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.364407" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:33.364262" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.364234" elapsed="0.000263"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.371557" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:33.371420" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.371396" elapsed="0.000253"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.372981" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:33.372447" elapsed="0.000568"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.373639" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:33.373262" elapsed="0.000410"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:33.373727" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:21:33.373925" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:33.371979" elapsed="0.001976"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.381984" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:33.381825" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.381798" elapsed="0.000281"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.383753" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:33.383599" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.383576" elapsed="0.000266"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:33.384471" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.384051" elapsed="0.000454"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.385064" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:33.384780" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.386588" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.386020" elapsed="0.001525">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:21:33.387715" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:21:33.387770" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.385341" elapsed="0.002457"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.389213" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.388714" elapsed="0.001489">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:21:33.390369" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:21:33.390424" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.388036" elapsed="0.002417"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.391701" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.390884" elapsed="0.000915">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:33.390548" elapsed="0.001417">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:21:33.390522" elapsed="0.001489">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:33.392285" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:33.392634" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:33.392389" elapsed="0.000408"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:33.392368" elapsed="0.000456"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.392920" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:33.394973" elapsed="0.000469"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.395797" elapsed="0.000395"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.396535" elapsed="0.000249"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:33.394189" elapsed="0.002689"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:33.393258" elapsed="0.003752"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.383250" elapsed="0.013865">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</status>
</kw>
<msg time="2026-04-17T03:21:33.397223" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:33.397268" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_300kroutes.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.382342" elapsed="0.014950"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.397478" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:33.397370" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.397350" elapsed="0.000194"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.398339" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:33.398234" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.398216" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.398888" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:33.398996" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.398570" elapsed="0.000453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.399472" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:33.399204" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.399930" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:33.399684" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.400641" elapsed="0.000287"/>
</kw>
<msg time="2026-04-17T03:21:33.401027" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:33.401073" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.400223" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:33.402242" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.403800" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.403541" elapsed="0.000811">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.402742" elapsed="0.001700"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.405444" elapsed="0.000187"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.404712" elapsed="0.000990"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:33.401426" elapsed="0.004357"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:33.401189" elapsed="0.004645"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.401170" elapsed="0.004688"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:33.406820" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.406380" elapsed="0.000469"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:33.406898" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:21:33.407104" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:33.406077" elapsed="0.001055"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.407300" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.407989" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:33.408088" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.407884" elapsed="0.000284"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.408331" elapsed="0.002490"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.411278" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:33.412665" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.411000" elapsed="0.002033">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:33.416671" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.417581" elapsed="0.000404"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:33.418226" elapsed="0.000175"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:33.413869" elapsed="0.004615"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:33.413341" elapsed="0.005189"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.397968" elapsed="0.020646">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:33.418965" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:33.419040" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:21:33.381406" elapsed="0.037754">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:21:33.419267" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:33.419310" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.374473" elapsed="0.044860"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:33.419674" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:33.419409" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:33.419390" elapsed="0.000360"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:33.374266" elapsed="0.045507"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:21:33.374025" elapsed="0.045781"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:21:33.371026" elapsed="0.048837"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:21:33.361459" elapsed="0.058460"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:33.360765" elapsed="0.059197"/>
</kw>
<arg>http_timeout=125</arg>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:21:29.825677" elapsed="3.594337"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:21:33.421248" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:21:33.421456" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:21:33.421048" elapsed="0.000433"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.426540" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:33.421693" elapsed="0.004893"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:21:33.426976" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:21:33.427199" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:21:33.426787" elapsed="0.000438"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.432107" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:33.427403" elapsed="0.004751"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:21:33.420800" elapsed="0.011413"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:21:33.420512" elapsed="0.011747"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:21:33.420247" elapsed="0.012055"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.437312" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:33.436906" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.437815" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:33.437515" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:33.437885" elapsed="0.000030"/>
</return>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:33.433185" elapsed="0.004827"/>
</kw>
<msg time="2026-04-17T03:21:33.438050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:33.432768" elapsed="0.005341"/>
</kw>
<msg time="2026-04-17T03:21:33.438209" level="INFO">${indices} = [1]</msg>
<var>${indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-17T03:21:33.432508" elapsed="0.005726"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.439235" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:21:33.438916" elapsed="0.000347"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:21:33.439308" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:21:33.439455" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:33.438629" elapsed="0.000852"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.444487" level="INFO">${operational_1} = ClusterManagement__session_1</msg>
<arg>${operational_${member_index}}</arg>
<arg>${session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:33.439659" elapsed="0.004874"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-17T03:21:33.438422" elapsed="0.006149"/>
</iter>
<var>${member_index}</var>
<value>@{indices}</value>
<status status="PASS" start="2026-04-17T03:21:33.438282" elapsed="0.006337"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.449560" level="INFO">${pc_all_indices} = [1]</msg>
<arg>${pc_all_indices}</arg>
<arg>${indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:33.444797" elapsed="0.004809"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="PASS" start="2026-04-17T03:21:33.449777" elapsed="0.000174"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:33.450240" elapsed="0.000178"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:21:33.452152" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:21:33.452229" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:21:33.451866" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:33.452425" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:21:33.453636" level="INFO">Logging into '10.30.171.117:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:21:34.182189" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:21:33 UTC 2026

  System load:  0.01               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.117
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:15:12 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:21:33.453323" elapsed="0.729041"/>
</kw>
<msg time="2026-04-17T03:21:34.182431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:33.452940" elapsed="0.729552"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:21:33.451416" elapsed="0.731178"/>
</kw>
<msg time="2026-04-17T03:21:34.182645" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:33.450988" elapsed="0.731702"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-17T03:21:33.450627" elapsed="0.732135"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.189038" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-17T03:21:34.200008" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/../../../../tools/fastbgp/play.py' -&gt; '/home/jenkins//play.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpclustering/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:21:34.182971" elapsed="0.017147"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.201968" level="INFO">Executing command 'python3 --help'.</msg>
<msg time="2026-04-17T03:21:34.213818" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:21:34.213987" level="INFO">${stdout} = usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_ins...</msg>
<msg time="2026-04-17T03:21:34.214053" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:21:34.214138" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:21:34.201740" elapsed="0.012433"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.215426" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:21:34.215006" elapsed="0.000488"/>
</kw>
<msg time="2026-04-17T03:21:34.215630" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:21:34.215693" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:34.214457" elapsed="0.001269"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.216661" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:34.215994" elapsed="0.000705"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.217366" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:34.216820" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.216787" elapsed="0.000751"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:21:34.217762" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-17T03:21:34.217619" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.217596" elapsed="0.000289"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:21:34.218014" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:34.217963" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:34.217941" elapsed="0.000182"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.218354" elapsed="0.000031"/>
</kw>
<msg time="2026-04-17T03:21:34.218565" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>python3 --help</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:21:34.201177" elapsed="0.017424"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:21:34.218828" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-17T03:21:34.218698" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.218673" elapsed="0.000265"/>
</if>
<kw name="Fatal Error" owner="BuiltIn">
<arg>Python 3 is not installed!</arg>
<doc>Stops the whole test execution.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.219184" elapsed="0.000031"/>
</kw>
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="PASS" start="2026-04-17T03:21:34.200563" elapsed="0.018733"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.221163" level="INFO">Executing command 'bash -c 'cd "." &amp;&amp; python -c "import ipaddr"''.</msg>
<msg time="2026-04-17T03:21:34.273974" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:21:34.274156" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:21:34.274221" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:21:34.274281" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:21:34.220879" elapsed="0.053435"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.275640" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:21:34.275259" elapsed="0.000502"/>
</kw>
<msg time="2026-04-17T03:21:34.275900" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:21:34.275963" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:34.274594" elapsed="0.001402"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.276974" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:34.276377" elapsed="0.000635"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.277679" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:34.277143" elapsed="0.000629"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.277115" elapsed="0.000693"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:21:34.278023" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-17T03:21:34.277886" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.277864" elapsed="0.000301"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:21:34.278294" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:34.278243" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:34.278222" elapsed="0.000159"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.278605" elapsed="0.000030"/>
</kw>
<msg time="2026-04-17T03:21:34.278815" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>bash -c 'cd "${target_dir}" &amp;&amp; python -c "import ipaddr"'</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:21:34.220321" elapsed="0.058530"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:21:34.279078" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-17T03:21:34.278948" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.278924" elapsed="0.000287"/>
</if>
<kw name="Put File" owner="SSHLibrary">
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py</arg>
<arg>${target_dir}/</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.279442" elapsed="0.000030"/>
</kw>
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="PASS" start="2026-04-17T03:21:34.219663" elapsed="0.059893"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.280356" level="INFO">${timeout} = 215.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER} * (${COUNT} * 6.0 / 10000 + 35)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:34.279794" elapsed="0.000600"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.286262" level="INFO">${bgp_filling_timeout} = 215.0</msg>
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:34.280653" elapsed="0.005656"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.293644" level="INFO">${bgp_emptying_timeout} = 161.25</msg>
<arg>${bgp_emptying_timeout}</arg>
<arg>${bgp_filling_timeout*3.0/4}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:34.286491" elapsed="0.007200"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:34.296084" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:34.295976" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.295957" elapsed="0.000209"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:34.296545" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.296325" elapsed="0.000246"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.296914" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:34.296740" elapsed="0.000199"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.297691" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.297471" elapsed="0.000721">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:21:34.298300" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:21:34.298346" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:34.297124" elapsed="0.001244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.299074" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.298896" elapsed="0.000673">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:21:34.299675" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:21:34.299718" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:34.298548" elapsed="0.001193"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.300418" level="FAIL">Failed to send the command: log:set INFO</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.300087" elapsed="0.000390">Failed to send the command: log:set INFO</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:34.299852" elapsed="0.000690">Failed to send the command: log:set INFO</status>
</branch>
<status status="FAIL" start="2026-04-17T03:21:34.299832" elapsed="0.000741">Failed to send the command: log:set INFO</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.300741" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.300981" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:34.300824" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:34.300808" elapsed="0.000247"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:21:34.301087" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:34.302723" elapsed="0.000138"/>
</kw>
<msg time="2026-04-17T03:21:34.302902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:34.302262" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.303149" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.303328" elapsed="0.000020"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:34.301917" elapsed="0.001492"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:34.301387" elapsed="0.002068"/>
</kw>
<arg>log:set ${KARAF_LOG_LEVEL}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.294054" elapsed="0.009478">Failed to send the command: log:set INFO</status>
</kw>
<kw name="Shards_Stability_Get_Details" owner="ShardStability">
<var>${init_shard_details}</var>
<arg>${SHARD_MONITOR_LIST}</arg>
<doc>Return shard details stored in dictionary.
${shard_list} should be initialized as @{list} shard_name1:shard_type1 shard_name2:shard..</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.310950" elapsed="0.000028"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${init_shard_details}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.311173" elapsed="0.000022"/>
</kw>
<doc>Setup imported resources, SSH-login to tools system,
create HTTP session, put Python tool to tools system.</doc>
<status status="FAIL" start="2026-04-17T03:21:29.825313" elapsed="4.485973">Failed to send the command: log:set INFO</status>
</kw>
<test id="s1-s8-t1" name="Get Example Bgp Rib Owner" line="44">
<doc>Find an odl node which is able to accept incomming connection. It is a node, which is the owner of bgp rib, as it is a singleton service.
This node should be used for bgp peer to connect to.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.311357" elapsed="0.000611">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t2" name="Check_For_Empty_Ipv4_Topology_Before_Talking" line="56">
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:21:34.312200" elapsed="0.000495">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t3" name="Reconfigure_ODL_To_Accept_Connection" line="69">
<doc>Configure BGP peer module with initiate-connection set to false.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.312863" elapsed="0.000385">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t4" name="Start_Talking_BGP_Speaker" line="88">
<doc>Start Python speaker to connect to ODL.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.313406" elapsed="0.000344">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t5" name="Wait_For_Stable_Talking_Ipv4_Topology" line="92">
<doc>Wait until example-ipv4-topology becomes stable. This is done by checking stability of prefix count as seen from all nodes.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.313944" elapsed="0.000477">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t6" name="Check_Talking_Ipv4_Topology_Count" line="106">
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct as seen from node 1.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:21:34.314618" elapsed="0.000436">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t7" name="Kill_Talking_BGP_Speaker" line="117">
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:21:34.315326" elapsed="0.000363">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t8" name="Wait_For_Stable_Ipv4_Topology_After_Listening" line="124">
<doc>Wait until example-ipv4-topology becomes stable again as seen from node 1.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:21:34.315892" elapsed="0.000438">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t9" name="Check_For_Empty_Ipv4_Topology_After_Listening" line="137">
<doc>Example-ipv4-topology should be empty now as seen from node 1.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:21:34.316494" elapsed="0.000404">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<test id="s1-s8-t10" name="Delete_Bgp_Peer_Configuration" line="147">
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.317066" elapsed="0.000401">Parent suite setup failed:
Failed to send the command: log:set INFO</status>
</test>
<kw name="Teardown_Everything" owner="PrefixcountKeywords" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.319404" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:21:34.341932" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:21:34.342070" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:21:34.319266" elapsed="0.022863"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:21:34.342200" elapsed="0.000046"/>
</return>
<msg time="2026-04-17T03:21:34.342430" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:21:34.318928" elapsed="0.023538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.343087" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:34.342716" elapsed="0.000453"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.344415" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:21:34.344525" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:21:34.344002" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:21:34.344820" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-17T03:21:34.344662" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.344635" elapsed="0.000299"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.345201" elapsed="0.000032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.345475" elapsed="0.000028"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.345763" elapsed="0.000029"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:21:34.343541" elapsed="0.002345"/>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:21:34.318625" elapsed="0.027334"/>
</kw>
<arg>KillPythonTool.Search_And_Kill_Remote_Python</arg>
<arg>'play\.py'</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:34.318210" elapsed="0.027813"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:34.346386" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:21:34.346276" elapsed="0.000221"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:21:34.346729" elapsed="0.000391"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:21:34.317956" elapsed="0.029246"/>
</kw>
<doc>BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used.

Copyright (c) 2015-2017 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 suite uses play.py as single iBGP peer which talks to
single controller in three node cluster configuration.
Test suite checks changes of the the example-ipv4-topology on all nodes.
RIB is not examined.

singlepeer_pc_shm_300kroutes:
pc - prefix counting
shm - shard monitoring (during the process of prefix advertizing)</doc>
<status status="FAIL" start="2026-04-17T03:21:29.734148" elapsed="4.613099">Suite setup failed:
Failed to send the command: log:set INFO</status>
</suite>
<suite id="s1-s9" name="Singlepeer Prefixcount" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.432793" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:34.428562" elapsed="0.004290"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:21:34.428322" elapsed="0.004606"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.438153" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:21:34.434124" elapsed="0.004060"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:34.438406" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:34.438276" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.438249" elapsed="0.000230"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.439009" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:34.438648" elapsed="0.000404"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.439553" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:21:34.439236" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:21:34.440128" elapsed="0.000299"/>
</kw>
<msg time="2026-04-17T03:21:34.440524" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:34.440571" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:34.439756" elapsed="0.000837"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.441266" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:34.440773" elapsed="0.000527"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.442425" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:34.442148" elapsed="0.000304"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.442889" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:34.442606" elapsed="0.000310"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.443391" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.443078" elapsed="0.000339"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.446891" elapsed="0.000255"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.447670" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:21:34.447317" elapsed="0.000381"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.447883" elapsed="0.000282"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.448984" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:21:34.448680" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:21:34.449056" elapsed="0.000053"/>
</return>
<msg time="2026-04-17T03:21:34.449232" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:34.448371" elapsed="0.000892"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:34.449895" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854419aded0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:21:34.449429" elapsed="0.000606"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.450217" elapsed="0.000192"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:21:34.446296" elapsed="0.004172"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:34.446034" elapsed="0.004480"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:21:34.443475" elapsed="0.007071"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.451154" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:34.450724" elapsed="0.000474"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.451768" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:34.451363" elapsed="0.000448"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.452403" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:34.451996" elapsed="0.000449"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:21:34.441601" elapsed="0.010901"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:21:34.433757" elapsed="0.018800"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:34.452747" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:34.452622" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.452603" elapsed="0.000211"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.455983" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:34.455583" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.456493" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:34.456190" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:34.456563" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:21:34.456716" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:34.455252" elapsed="0.001489"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:34.457931" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.457610" elapsed="0.000349"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.458785" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:34.458886" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:34.458608" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.462601" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:34.461981" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.461960" elapsed="0.000775"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.463392" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:34.463625" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:34.462939" elapsed="0.000747"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.464653" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:34.463954" elapsed="0.000811"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.465990" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.465054" elapsed="0.000999"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.467866" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:21:34.468056" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:21:34.467471" elapsed="0.000646"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:34.468473" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.470263" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:21:34.799920" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:21:29 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:21:30 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:21:34.469819" elapsed="0.330259"/>
</kw>
<msg time="2026-04-17T03:21:34.800186" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:34.469311" elapsed="0.331055"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:21:34.466534" elapsed="0.333989"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.801545" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:21:34.815628" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:21:34.815990" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:21:34.816257" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:21:34.800947" elapsed="0.015418"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:34.817370" elapsed="0.001620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.821904" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:34.820472" elapsed="0.001743"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:21:34.823190" elapsed="0.000112"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:34.822593" elapsed="0.000882"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.822531" elapsed="0.001031"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:21:34.824272" elapsed="0.000148"/>
</return>
<status status="PASS" start="2026-04-17T03:21:34.823742" elapsed="0.000855"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.823704" elapsed="0.000981"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:21:34.824816" elapsed="0.000038"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:34.830860" elapsed="0.000738"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.831993" elapsed="0.000428"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:34.832793" elapsed="0.000333"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:34.826048" elapsed="0.007179"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:21:34.460956" elapsed="0.372542"/>
</kw>
<msg time="2026-04-17T03:21:34.833590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:34.460277" elapsed="0.373400"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:21:34.459604" elapsed="0.374189"/>
</kw>
<msg time="2026-04-17T03:21:34.833851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:34.459072" elapsed="0.374844"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:34.836920" elapsed="0.000331"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.837422" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:34.837721" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:34.834387" elapsed="0.003482"/>
</kw>
<msg time="2026-04-17T03:21:34.837967" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:21:34.458210" elapsed="0.379782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.838458" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:34.838206" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:21:34.838542" elapsed="0.000031"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:21:34.457207" elapsed="0.381496"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:34.456987" elapsed="0.381758"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:21:34.456832" elapsed="0.381952"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:21:34.453038" elapsed="0.385819"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:21:34.839033" elapsed="0.000271"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:34.853179" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:34.853052" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.853032" elapsed="0.000215"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.853553" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:34.853657" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:34.853410" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.854197" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:34.853903" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:34.854645" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:34.854399" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:34.855457" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.855227" elapsed="0.000344">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:21:34.855681" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:34.855726" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:34.854850" elapsed="0.000899"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:34.856053" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:34.855825" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:34.855806" elapsed="0.000362"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:34.856911" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.856645" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:34.856984" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:21:34.857151" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:34.856371" elapsed="0.000805"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.857332" elapsed="0.000406"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.858015" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:34.858155" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:34.857911" elapsed="0.000272"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.858335" elapsed="0.002408"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:34.861200" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:34.862522" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.860914" elapsed="0.002033">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:34.865976" elapsed="0.000391"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:34.866533" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:34.866827" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:34.863771" elapsed="0.003202"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:34.863253" elapsed="0.003765"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.852767" elapsed="0.014362">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:35.884811" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:35.884667" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:35.884639" elapsed="0.000261"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:35.885289" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:35.885405" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:35.885106" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:35.885993" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:35.885684" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:35.886477" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:35.886221" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:35.887150" elapsed="0.000200"/>
</kw>
<msg time="2026-04-17T03:21:35.887451" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:35.887496" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:35.886694" elapsed="0.000825"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:35.888377" elapsed="0.000139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:35.889210" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:35.889020" elapsed="0.000707">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:35.888687" elapsed="0.001103"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:35.890308" elapsed="0.000101"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:35.889963" elapsed="0.000493"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:35.887825" elapsed="0.002675"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:35.887595" elapsed="0.002953"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:35.887576" elapsed="0.002997"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:35.891359" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:35.891058" elapsed="0.000327"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:35.891433" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:21:35.891590" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:35.890781" elapsed="0.000833"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:35.891770" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:35.892464" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:35.892562" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:35.892360" elapsed="0.000228"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:35.892736" elapsed="0.002445"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:35.895615" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:35.897039" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:35.895350" elapsed="0.002093">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:35.900483" elapsed="0.000356"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:35.901010" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:35.901325" elapsed="0.000095"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:35.898265" elapsed="0.003206"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:35.897724" elapsed="0.003793"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:35.884266" elapsed="0.017334">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:36.919648" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:36.919470" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:36.919433" elapsed="0.000323"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:36.920279" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:36.920426" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:36.920024" elapsed="0.000435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:36.921064" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:36.920671" elapsed="0.000471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:36.921710" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:36.921347" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:36.922719" elapsed="0.000236"/>
</kw>
<msg time="2026-04-17T03:21:36.923078" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:36.923155" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:36.921995" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:36.924265" elapsed="0.000168"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:36.925306" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:36.925066" elapsed="0.000932">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:36.924649" elapsed="0.001427"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:36.926731" elapsed="0.000127"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:36.926318" elapsed="0.000596"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:36.923575" elapsed="0.003393"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:36.923281" elapsed="0.003750"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:36.923257" elapsed="0.003808"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:36.928124" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:36.927767" elapsed="0.000391"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:36.928220" elapsed="0.000046"/>
</return>
<msg time="2026-04-17T03:21:36.928418" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:36.927381" elapsed="0.001067"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:36.928656" elapsed="0.000556"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:36.929641" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:36.929770" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:36.929439" elapsed="0.000363"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:36.929996" elapsed="0.004906"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:36.935505" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:36.936930" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:36.935157" elapsed="0.002426">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:36.941825" elapsed="0.000497"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:36.942625" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:36.943037" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:36.938784" elapsed="0.004466"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:36.938011" elapsed="0.005297"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:36.918888" elapsed="0.024529">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:37.961588" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:37.961449" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:37.961424" elapsed="0.000246"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:37.962034" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:37.962166" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:37.961858" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:37.962650" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:37.962353" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:37.963113" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:37.962852" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:37.963707" elapsed="0.000226"/>
</kw>
<msg time="2026-04-17T03:21:37.964040" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:37.964279" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:37.963327" elapsed="0.000978"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:37.965221" elapsed="0.000143"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:37.966055" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:37.965877" elapsed="0.000704">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:37.965537" elapsed="0.001134"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:37.967200" elapsed="0.000103"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:37.966853" elapsed="0.000495"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:37.964609" elapsed="0.002782"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:37.964382" elapsed="0.003057"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:37.964363" elapsed="0.003101"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:37.968311" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:37.967984" elapsed="0.000356"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:37.968389" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:21:37.968545" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:37.967675" elapsed="0.000895"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:37.968728" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:37.969431" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:37.969533" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:37.969325" elapsed="0.000236"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:37.969711" elapsed="0.002510"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:37.972718" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:37.974051" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:37.972455" elapsed="0.002021">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:37.977587" elapsed="0.000359"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:37.978144" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:37.978469" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:37.975319" elapsed="0.003299"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:37.974764" elapsed="0.003901"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:37.961065" elapsed="0.017685">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:21:37.978839" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.840323" elapsed="3.138609">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:34.839718" elapsed="3.139279"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:34.839546" elapsed="3.139494"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:21:34.839375" elapsed="3.139700"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:21:34.433253" elapsed="3.545917"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:37.981861" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:37.981748" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:37.981728" elapsed="0.000205"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:37.986697" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:37.986591" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:37.986572" elapsed="0.000213"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:37.987767" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:37.987387" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:37.988271" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:37.987955" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:37.988363" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:21:37.988519" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:37.987034" elapsed="0.001510"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:37.994037" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:37.993927" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:37.993908" elapsed="0.000213"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:37.995370" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:37.995236" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:37.995215" elapsed="0.000224"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:37.995900" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:37.995584" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:37.996404" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:37.996147" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:37.997596" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:37.997164" elapsed="0.001149">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:21:37.998452" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:21:37.998498" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:37.996596" elapsed="0.001925"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:21:37.999660" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:21:37.999251" elapsed="0.001311">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:21:38.000705" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:21:38.000751" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:37.998694" elapsed="0.002080"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.001770" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.001114" elapsed="0.000735">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:38.000850" elapsed="0.001132">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:21:38.000830" elapsed="0.001187">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.002200" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.002430" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:38.002287" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:38.002270" elapsed="0.000339"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.002643" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:38.004651" elapsed="0.000486"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.005482" elapsed="0.000281"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:38.006094" elapsed="0.000243"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:38.003788" elapsed="0.002637"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:38.002904" elapsed="0.003652"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:21:37.994897" elapsed="0.011746">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</status>
</kw>
<msg time="2026-04-17T03:21:38.006747" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:38.006790" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_prefixcount.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:37.994276" elapsed="0.012538"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.006994" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.006889" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.006870" elapsed="0.000188"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.007819" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.007717" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.007699" elapsed="0.000184"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.008427" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:38.008565" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:38.008036" elapsed="0.000589"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.009045" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:38.008786" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.009505" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:38.009262" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.010073" elapsed="0.000294"/>
</kw>
<msg time="2026-04-17T03:21:38.010465" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:38.010510" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.009708" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:38.011631" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.013279" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.013004" elapsed="0.000713">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.012223" elapsed="0.001585"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:38.014774" elapsed="0.000188"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.014051" elapsed="0.000981"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:38.010830" elapsed="0.004300"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:38.010607" elapsed="0.004575"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.010588" elapsed="0.004618"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:38.016199" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.015686" elapsed="0.000541"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:38.016275" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:21:38.016426" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:38.015412" elapsed="0.001038"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.016639" elapsed="0.000391"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.017321" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:38.017420" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:38.017215" elapsed="0.000231"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.017594" elapsed="0.002263"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.020338" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:38.021796" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.020022" elapsed="0.002161">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:38.025617" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.026550" elapsed="0.000401"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:38.027184" elapsed="0.000175"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:38.022963" elapsed="0.004474"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:38.022456" elapsed="0.005030"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.007476" elapsed="0.020094">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.027951" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.028026" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:21:37.993637" elapsed="0.034512">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:21:38.028256" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:38.028299" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:37.988916" elapsed="0.039406"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.028651" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:38.028398" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.028380" elapsed="0.000378"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:37.988772" elapsed="0.040009"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:21:37.988598" elapsed="0.040212"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:21:37.986300" elapsed="0.042565"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:21:37.979773" elapsed="0.049147"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:37.979337" elapsed="0.049623"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:21:34.427983" elapsed="3.601027"/>
</kw>
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:38.033140" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543be370d0&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:21:38.032756" elapsed="0.000523"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:21:38.032313" elapsed="0.001032"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:21:38.034514" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:21:38.034723" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:21:38.034330" elapsed="0.000418"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.039281" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:38.034914" elapsed="0.004421"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:21:38.039772" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:21:38.040007" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:21:38.039558" elapsed="0.000478"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.044436" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:38.040237" elapsed="0.004245"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:21:38.034054" elapsed="0.010487"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:21:38.033790" elapsed="0.010797"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:21:38.033538" elapsed="0.011094"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:38.045136" level="INFO">Creating Session using : alias=operational, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543bdbe3d0&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=125</arg>
<arg>max_retries=0</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:21:38.044784" elapsed="0.000458"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="PASS" start="2026-04-17T03:21:38.045411" elapsed="0.000171"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.045736" elapsed="0.000177"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.047615" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:21:38.047693" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:21:38.047312" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:38.047879" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.049314" level="INFO">Logging into '10.30.171.117:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:21:38.404033" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:21:33 UTC 2026

  System load:  0.01               Processes:             105
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.117
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:21:34 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:21:38.048977" elapsed="0.355263"/>
</kw>
<msg time="2026-04-17T03:21:38.404379" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:38.048381" elapsed="0.356101"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:21:38.046858" elapsed="0.357774"/>
</kw>
<msg time="2026-04-17T03:21:38.404700" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:38.046466" elapsed="0.358295"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-17T03:21:38.046129" elapsed="0.358741"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.406625" level="INFO">Executing command 'python3 --help'.</msg>
<msg time="2026-04-17T03:21:38.418817" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:21:38.419003" level="INFO">${stdout} = usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_ins...</msg>
<msg time="2026-04-17T03:21:38.419072" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:21:38.419171" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:21:38.406397" elapsed="0.012811"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.420811" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:21:38.420267" elapsed="0.000633"/>
</kw>
<msg time="2026-04-17T03:21:38.421073" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:21:38.421215" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.419589" elapsed="0.001673"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.422509" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:38.421613" elapsed="0.000947"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.423437" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:38.422722" elapsed="0.000843"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.422677" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:21:38.423925" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-17T03:21:38.423732" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.423700" elapsed="0.000421"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.424307" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.424233" elapsed="0.000157"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:38.424203" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.424772" elapsed="0.000043"/>
</kw>
<msg time="2026-04-17T03:21:38.425066" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>python3 --help</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:21:38.405973" elapsed="0.019172"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:21:38.425465" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-17T03:21:38.425282" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.425248" elapsed="0.000375"/>
</if>
<kw name="Fatal Error" owner="BuiltIn">
<arg>Python 3 is not installed!</arg>
<doc>Stops the whole test execution.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.425917" elapsed="0.000042"/>
</kw>
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="PASS" start="2026-04-17T03:21:38.405375" elapsed="0.020840"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.428824" level="INFO">Executing command 'bash -c 'cd "." &amp;&amp; python -c "import ipaddr"''.</msg>
<msg time="2026-04-17T03:21:38.488866" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:21:38.489175" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:21:38.489235" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:21:38.489287" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:21:38.428417" elapsed="0.060900"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.490600" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:21:38.490232" elapsed="0.000429"/>
</kw>
<msg time="2026-04-17T03:21:38.490778" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:21:38.490831" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.489666" elapsed="0.001192"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.491656" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:38.491082" elapsed="0.000608"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.492314" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:38.491807" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.491776" elapsed="0.000659"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:21:38.492632" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-17T03:21:38.492508" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.492488" elapsed="0.000266"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.492868" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.492825" elapsed="0.000093"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:38.492805" elapsed="0.000139"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.493177" elapsed="0.000028"/>
</kw>
<msg time="2026-04-17T03:21:38.493371" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>bash -c 'cd "${target_dir}" &amp;&amp; python -c "import ipaddr"'</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:21:38.427667" elapsed="0.065734"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:21:38.493602" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-17T03:21:38.493488" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.493466" elapsed="0.000234"/>
</if>
<kw name="Put File" owner="SSHLibrary">
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py</arg>
<arg>${target_dir}/</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.493899" elapsed="0.000025"/>
</kw>
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="PASS" start="2026-04-17T03:21:38.426739" elapsed="0.067263"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.534443" level="INFO">[chan 3] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-17T03:21:38.544155" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py' -&gt; '/home/jenkins//play.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:21:38.494226" elapsed="0.050049"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.545144" level="INFO">${timeout} = 560.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER_PREFIX_COUNT_SINGLE} * (${COUNT_PREFIX_COUNT_SINGLE} * 9.0 / 10000 + 20)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:38.544575" elapsed="0.000599"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.552271" level="INFO">${bgp_filling_timeout} = 560.0</msg>
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:21:38.545359" elapsed="0.006985"/>
</kw>
<doc>Setup imported resources, SSH-login to tools system,
create HTTP session, put Python tool to tools system.</doc>
<status status="PASS" start="2026-04-17T03:21:34.427625" elapsed="4.124830"/>
</kw>
<test id="s1-s9-t1" name="Check_For_Empty_Ipv4_Topology_Before_Talking" line="79">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.556863" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:38.556627" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.556603" elapsed="0.000346"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:21:38.556371" elapsed="0.000626"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.558123" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.557994" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.557975" elapsed="0.000292"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.564253" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.564071" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.564043" elapsed="0.000310"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.565832" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:21:38.565240" elapsed="0.000630"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.566512" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:21:38.566091" elapsed="0.000458"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:21:38.566613" elapsed="0.000049"/>
</return>
<msg time="2026-04-17T03:21:38.566836" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:21:38.564688" elapsed="0.002185"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.575152" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.574955" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.574922" elapsed="0.000343"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.577065" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.576905" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.576871" elapsed="0.000335"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:38.577923" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.577438" elapsed="0.000525"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.578565" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:38.578238" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.579736" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.579352" elapsed="0.001354">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:21:38.580958" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:21:38.581027" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.578860" elapsed="0.002203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.582085" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.581739" elapsed="0.001058">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:21:38.582986" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:21:38.583032" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.581335" elapsed="0.001720"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.584125" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.583396" elapsed="0.000796">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:21:38.583156" elapsed="0.001109">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:21:38.583135" elapsed="0.001164">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.584476" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.584709" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:38.584565" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:38.584548" elapsed="0.000235"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.584818" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:38.587434" elapsed="0.000148"/>
</kw>
<msg time="2026-04-17T03:21:38.587700" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:38.586394" elapsed="0.001443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.588251" elapsed="0.000100"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.588693" elapsed="0.000098"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:38.585679" elapsed="0.003254"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:38.585119" elapsed="0.003903"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.576455" elapsed="0.012706">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</kw>
<msg time="2026-04-17T03:21:38.589300" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:38.589355" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_Before_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.575506" elapsed="0.013880"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.589633" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.589490" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.589462" elapsed="0.000256"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.590983" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.590853" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.590829" elapsed="0.000230"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.591371" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:38.591494" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:38.591240" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.591980" level="INFO">{1: 13}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:38.591707" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.592460" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:21:38.592202" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.593046" elapsed="0.000285"/>
</kw>
<msg time="2026-04-17T03:21:38.593437" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:21:38.593494" level="INFO">${old_connection_index} = 13</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.592673" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:38.594535" elapsed="0.000198"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.595809" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.595407" elapsed="0.001258">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.594907" elapsed="0.001857"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:21:38.597424" elapsed="0.000275"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.596941" elapsed="0.000840"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:21:38.593829" elapsed="0.003998"/>
</kw>
<status status="PASS" start="2026-04-17T03:21:38.593599" elapsed="0.004278"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.593579" elapsed="0.004322"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:21:38.598851" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.598545" elapsed="0.000332"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:21:38.598926" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:21:38.599075" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:21:38.598215" elapsed="0.000901"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.599319" elapsed="0.000420"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.600024" level="INFO">index=16
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:21:38.600148" level="INFO">${karaf_connection_object} = index=16
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:21:38.599915" elapsed="0.000260"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:21:38.600329" elapsed="0.002287"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:21:38.603049" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:21:38.604375" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.602783" elapsed="0.001966">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:21:38.618671" elapsed="0.000385"/>
</kw>
<msg time="2026-04-17T03:21:38.619162" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:21:38.616984" elapsed="0.002325"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.619526" elapsed="0.000025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.619699" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:21:38.605565" elapsed="0.014217"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:21:38.605029" elapsed="0.014799"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.590273" elapsed="0.029641">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.620280" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.620356" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.574442" elapsed="0.046021">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:21:38.620571" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:38.620616" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.567462" elapsed="0.053178"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.620980" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:38.620719" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.620699" elapsed="0.000359"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:21:38.567241" elapsed="0.053841"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:21:38.566959" elapsed="0.054185"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:21:38.563536" elapsed="0.057680"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:21:38.557681" elapsed="0.063593"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.557173" elapsed="0.064148"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:21:38.553773" elapsed="0.067602"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:38.627820" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.625092" elapsed="0.004447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.629820" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:38.629644" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:38.629622" elapsed="0.000278"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.629935" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.624664" elapsed="0.005382">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.630362" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.630436" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.624139" elapsed="0.006401">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:38.630652" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:38.630698" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:38.623635" elapsed="0.007088"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:38.630889" elapsed="0.040176"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:38.672077" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:38.671942" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:38.671918" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:38.672691" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.672327" elapsed="0.000439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:38.671528" elapsed="0.001354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:38.672944" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.623154" elapsed="0.049896">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:38.673245" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.622586" elapsed="0.050771">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.622051" elapsed="0.051404">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:39.684707" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:39.681012" elapsed="0.006594">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:39.688033" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:39.687779" elapsed="0.000314"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:39.687743" elapsed="0.000390"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:39.688171" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:39.680353" elapsed="0.007941">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:39.688474" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:39.688542" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:39.679218" elapsed="0.009426">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:39.688801" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:39.688849" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:39.677881" elapsed="0.010992"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:39.689043" elapsed="0.030986"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:39.721117" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:39.720961" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:39.720936" elapsed="0.000252"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:39.721732" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:39.721353" elapsed="0.000469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:39.720498" elapsed="0.001442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:39.722004" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:39.676748" elapsed="0.045378">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:39.722308" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:39.675485" elapsed="0.046937">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:39.674443" elapsed="0.048150">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:40.730366" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:40.727301" elapsed="0.005574">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:40.733271" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:40.733018" elapsed="0.000324"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:40.732988" elapsed="0.000385"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:40.733419" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:40.726731" elapsed="0.006833">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:40.733797" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:40.733882" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:40.725984" elapsed="0.008027">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:40.734170" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:40.734228" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:40.725304" elapsed="0.008955"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:40.734475" elapsed="0.032190"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:40.767989" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:40.767845" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:40.767821" elapsed="0.000238"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:40.768599" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:40.768236" elapsed="0.000437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:40.767424" elapsed="0.001362">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:40.768848" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:40.724649" elapsed="0.044298">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:40.769237" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:40.723923" elapsed="0.045429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:40.723295" elapsed="0.046155">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:41.780164" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:41.776293" elapsed="0.006514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:41.783140" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:41.782933" elapsed="0.000266"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:41.782906" elapsed="0.000321"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:41.783265" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:41.775616" elapsed="0.007769">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:41.783564" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:41.783633" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:41.774790" elapsed="0.008958">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:41.783869" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:41.783916" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:41.773931" elapsed="0.010009"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:41.784128" elapsed="0.031357"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:41.816486" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:41.816351" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:41.816328" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:41.817078" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:41.816717" elapsed="0.000455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:41.815917" elapsed="0.001368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:41.817417" elapsed="0.000044"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:41.772659" elapsed="0.044888">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:41.817722" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:41.771295" elapsed="0.046537">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:41.770328" elapsed="0.047599">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:42.829248" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:42.825289" elapsed="0.006776">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:42.832428" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:42.832234" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:42.832206" elapsed="0.000304"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:42.832547" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:42.824622" elapsed="0.008044">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:42.832848" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:42.832916" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:42.823548" elapsed="0.009470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:42.833160" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:42.833207" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:42.822309" elapsed="0.010923"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:42.833398" elapsed="0.030223"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:42.864708" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:42.864567" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:42.864540" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:42.865362" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:42.864951" elapsed="0.000488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:42.864117" elapsed="0.001514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:42.865693" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:42.821176" elapsed="0.044616">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:42.865967" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:42.819778" elapsed="0.046300">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:42.818781" elapsed="0.047418">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:43.878881" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:43.874183" elapsed="0.006610">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:43.881115" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:43.880913" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:43.880887" elapsed="0.000312"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:43.881236" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:43.873184" elapsed="0.008169">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:43.881535" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:43.881603" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:43.871891" elapsed="0.009816">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:43.881824" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:43.881869" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:43.870689" elapsed="0.011206"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:43.882063" elapsed="0.029880"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:43.913166" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:43.913009" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:43.912982" elapsed="0.000259"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:43.913797" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:43.913407" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:43.912561" elapsed="0.001431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:43.914054" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:43.869547" elapsed="0.044627">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:43.914357" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:43.868144" elapsed="0.046324">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:43.867071" elapsed="0.047493">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:44.923152" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:44.919470" elapsed="0.005774">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:44.925567" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:44.925374" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:44.925345" elapsed="0.000306"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:44.925688" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:44.918794" elapsed="0.007019">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:44.926004" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:44.926114" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:44.918153" elapsed="0.008079">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:44.926417" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:44.926465" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:44.917456" elapsed="0.009034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:44.926662" elapsed="0.038072"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:44.965840" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:44.965698" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:44.965672" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:44.966481" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:44.966080" elapsed="0.000478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:44.965261" elapsed="0.001431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:44.966773" elapsed="0.000023"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:44.916771" elapsed="0.050118">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:44.967111" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:44.916068" elapsed="0.051163">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:44.915438" elapsed="0.051893">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:45.978368" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:45.974844" elapsed="0.006143">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:45.981449" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:45.981224" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:45.981188" elapsed="0.000348"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:45.981575" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:45.974224" elapsed="0.007471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:45.981880" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:45.982021" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:45.973429" elapsed="0.008716">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:45.982268" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:45.982314" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:45.972137" elapsed="0.010202"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:45.982547" elapsed="0.034048"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:46.017708" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:46.017561" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:46.017536" elapsed="0.000244"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:46.018378" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:46.017946" elapsed="0.000512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:46.017068" elapsed="0.001510">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:46.018642" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:45.970794" elapsed="0.047949">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:46.018923" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:45.969428" elapsed="0.049609">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:45.968344" elapsed="0.050813">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:47.027770" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:47.024062" elapsed="0.006721">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:47.031237" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:47.030953" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:47.030917" elapsed="0.000540"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:47.031517" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:47.023461" elapsed="0.008224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:47.031939" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:47.032034" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:47.022682" elapsed="0.009533">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:47.032384" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:47.032446" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:47.021761" elapsed="0.010719"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:47.032760" elapsed="0.035824"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:47.069660" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:47.069524" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:47.069498" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:47.070330" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:47.069893" elapsed="0.000515">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:47.069068" elapsed="0.001455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:47.070585" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:47.020965" elapsed="0.049720">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:47.070862" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:47.020310" elapsed="0.050664">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:47.019747" elapsed="0.051327">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:48.078747" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:48.075190" elapsed="0.006582">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:48.082355" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:48.082039" elapsed="0.000394"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:48.081999" elapsed="0.000470"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:48.082521" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:48.074716" elapsed="0.007978">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:48.082948" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:48.083038" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:48.074076" elapsed="0.009118">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:48.083375" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:48.083435" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:48.073459" elapsed="0.010008"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:48.083690" elapsed="0.049739"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:48.134883" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:48.134695" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:48.134658" elapsed="0.000416"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:48.135902" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:48.135351" elapsed="0.000724">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:48.134053" elapsed="0.002219">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:48.136366" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:48.072886" elapsed="0.063622">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:48.136770" elapsed="0.000035"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:48.072289" elapsed="0.064653">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:48.071712" elapsed="0.065372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:49.146070" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:49.142499" elapsed="0.006270">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:49.149216" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:49.148934" elapsed="0.000365"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:49.148897" elapsed="0.000439"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:49.149395" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:49.141861" elapsed="0.007702">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:49.149826" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:49.149925" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:49.141121" elapsed="0.008956">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:49.150280" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:49.150346" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:49.140339" elapsed="0.010043"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:49.150625" elapsed="0.044213"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:49.197882" elapsed="0.000058"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:49.197426" elapsed="0.000605"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:49.197343" elapsed="0.000789"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:49.199782" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:49.198567" elapsed="0.001371">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:49.196069" elapsed="0.004115">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:49.200376" elapsed="0.000038"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:49.139597" elapsed="0.060975">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:49.200876" elapsed="0.000037"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:49.138527" elapsed="0.062551">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:49.137806" elapsed="0.063612">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:50.213254" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:50.210028" elapsed="0.005224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:50.215563" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:50.215376" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:50.215349" elapsed="0.000297"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:50.215684" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:50.208934" elapsed="0.006871">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:50.215986" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:50.216056" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:50.207697" elapsed="0.008481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:50.216299" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:50.216347" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:50.206481" elapsed="0.009893"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:50.216542" elapsed="0.032504"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:50.250229" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:50.250066" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:50.250038" elapsed="0.000269"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:50.250876" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:50.250482" elapsed="0.000472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:50.249608" elapsed="0.001466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:50.251157" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:50.205257" elapsed="0.046003">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:50.251530" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:50.203894" elapsed="0.047751">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:50.202597" elapsed="0.049146">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:51.262652" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:51.258855" elapsed="0.006272">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:51.265440" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:51.265253" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:51.265227" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:51.265559" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:51.258194" elapsed="0.007489">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:51.265869" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:51.265942" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:51.257399" elapsed="0.008644">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:51.266182" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:51.266227" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:51.256506" elapsed="0.009745"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:51.266417" elapsed="0.034236"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:51.301689" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:51.301555" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:51.301530" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:51.302317" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:51.301922" elapsed="0.000471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:51.301127" elapsed="0.001382">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:51.302641" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:51.255237" elapsed="0.047508">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:51.302922" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:51.253932" elapsed="0.049100">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:51.252850" elapsed="0.050297">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:52.312844" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:52.309199" elapsed="0.006257">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:52.315861" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:52.315612" elapsed="0.000321"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:52.315578" elapsed="0.000390"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:52.316017" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:52.308612" elapsed="0.007582">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:52.316435" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:52.316528" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:52.307785" elapsed="0.008876">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:52.316810" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:52.316869" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:52.306857" elapsed="0.010044"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:52.317139" elapsed="0.035386"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:52.353547" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:52.353411" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:52.353387" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:52.354197" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:52.353781" elapsed="0.000494">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:52.352969" elapsed="0.001493">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:52.354525" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:52.305913" elapsed="0.048712">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:52.354804" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:52.304755" elapsed="0.050160">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:52.303903" elapsed="0.051110">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:53.366677" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:53.362949" elapsed="0.005689">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:53.368950" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:53.368763" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:53.368736" elapsed="0.000296"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:53.369071" elapsed="0.000033"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:53.361936" elapsed="0.007274">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:53.369390" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:53.369458" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:53.360681" elapsed="0.008878">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:53.369676" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:53.369721" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:53.359446" elapsed="0.010300"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:53.369910" elapsed="0.031152"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:53.402076" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:53.401942" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:53.401918" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:53.402761" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:53.402323" elapsed="0.000512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:53.401529" elapsed="0.001418">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:53.403008" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:53.358285" elapsed="0.044838">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:53.403300" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:53.356954" elapsed="0.046456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:53.355886" elapsed="0.047622">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:54.416049" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:54.412590" elapsed="0.005524">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:54.418501" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:54.418268" elapsed="0.000303"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:54.418230" elapsed="0.000371"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:54.418640" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:54.411460" elapsed="0.007307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:54.418977" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:54.419054" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:54.409955" elapsed="0.009224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:54.419309" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:54.419355" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:54.408475" elapsed="0.010910"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:54.419644" elapsed="0.033589"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:54.454316" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:54.454174" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:54.454143" elapsed="0.000243"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:54.454922" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:54.454552" elapsed="0.000446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:54.453713" elapsed="0.001419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:54.455196" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:54.407236" elapsed="0.048059">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:54.455470" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:54.405714" elapsed="0.049867">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:54.404489" elapsed="0.051189">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:55.468394" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:55.463534" elapsed="0.006765">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:55.470664" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:55.470421" elapsed="0.000307"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:55.470395" elapsed="0.000358"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:55.470791" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:55.462481" elapsed="0.008456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:55.471140" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:55.471209" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:55.461245" elapsed="0.010062">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:55.471546" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:55.471597" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:55.460041" elapsed="0.011581"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:55.471787" elapsed="0.034221"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:55.507142" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:55.506975" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:55.506902" elapsed="0.000315"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:55.507756" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:55.507380" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:55.506499" elapsed="0.001444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:55.508005" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:55.458813" elapsed="0.049307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:55.508297" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:55.457523" elapsed="0.050886">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:55.456589" elapsed="0.051917">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:56.519363" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:56.516430" elapsed="0.004885">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:56.521625" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:56.521436" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:56.521410" elapsed="0.000299"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:56.521746" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:56.515347" elapsed="0.006517">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:56.522132" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:56.522203" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:56.514083" elapsed="0.008223">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:56.522424" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:56.522470" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:56.512881" elapsed="0.009614"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:56.522662" elapsed="0.032735"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:56.556482" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:56.556299" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:56.556273" elapsed="0.000281"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:56.557116" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:56.556724" elapsed="0.000470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:56.555857" elapsed="0.001455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:56.557372" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:56.511672" elapsed="0.045799">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:56.557647" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:56.510398" elapsed="0.047359">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:56.509413" elapsed="0.048439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:57.571636" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:57.566552" elapsed="0.007131">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:57.574122" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:57.573882" elapsed="0.000302"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:57.573852" elapsed="0.000358"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:57.574247" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:57.565388" elapsed="0.008982">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:57.574562" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:57.574631" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:57.563931" elapsed="0.010801">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:57.574862" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:57.574908" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:57.562663" elapsed="0.012269"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:57.575113" elapsed="0.033779"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:57.610142" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:57.609987" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:57.609960" elapsed="0.000257"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:57.610764" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:57.610384" elapsed="0.000455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:57.609431" elapsed="0.001543">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:57.611040" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:57.561272" elapsed="0.049888">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:57.611341" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:57.559751" elapsed="0.051705">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:57.558737" elapsed="0.052817">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:58.625163" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:58.620222" elapsed="0.006981">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:58.627555" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:58.627341" elapsed="0.000288"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:58.627312" elapsed="0.000352"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:58.627714" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:58.619168" elapsed="0.008696">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:58.628063" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:58.628154" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:58.617765" elapsed="0.010496">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:58.628392" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:58.628441" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:58.616384" elapsed="0.012093"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:58.628698" elapsed="0.032765"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:58.662580" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:58.662436" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:58.662406" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:58.663331" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:58.662896" elapsed="0.000518">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:58.661949" elapsed="0.001586">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:58.663599" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:58.615141" elapsed="0.048565">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:58.663886" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:58.613732" elapsed="0.050268">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:58.612604" elapsed="0.051512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:21:59.675142" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:21:59.670996" elapsed="0.006597">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:59.677928" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:21:59.677716" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:21:59.677690" elapsed="0.000329"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:21:59.678058" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:21:59.670345" elapsed="0.007857">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:59.678413" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:21:59.678488" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:21:59.669472" elapsed="0.009122">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:21:59.678716" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:21:59.678763" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:21:59.668626" elapsed="0.010162"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:21:59.678954" elapsed="0.036329"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:21:59.716744" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:21:59.716572" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-17T03:21:59.716538" elapsed="0.000277"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:21:59.717385" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:21:59.716979" elapsed="0.000483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:21:59.715901" elapsed="0.001676">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:21:59.717637" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:21:59.667402" elapsed="0.050334">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:21:59.717909" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:21:59.666031" elapsed="0.051987">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:21:59.665017" elapsed="0.053250">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:00.727122" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:00.723551" elapsed="0.006275">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:00.730178" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:00.729956" elapsed="0.000281"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:00.729927" elapsed="0.000337"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:00.730302" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:00.722923" elapsed="0.007504">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:00.730611" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:00.730679" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:00.722155" elapsed="0.008631">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:00.730909" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:00.730954" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:00.721373" elapsed="0.009607"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:00.731162" elapsed="0.033905"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:00.766174" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:00.766005" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:00.765978" elapsed="0.000271"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:00.766806" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:00.766418" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:00.765557" elapsed="0.001445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:00.767063" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:00.720589" elapsed="0.046766">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:00.767632" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:00.719784" elapsed="0.047966">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:00.719133" elapsed="0.048714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:01.780377" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:01.776028" elapsed="0.006306">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:01.782657" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:01.782461" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:01.782434" elapsed="0.000305"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:01.782777" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:01.775010" elapsed="0.007891">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:01.783081" elapsed="0.000039"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:01.783167" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:01.773672" elapsed="0.009596">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:01.783390" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:01.783435" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:01.772339" elapsed="0.011121"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:01.783624" elapsed="0.032481"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:01.817117" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:01.816969" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:01.816944" elapsed="0.000244"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:01.817717" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:01.817349" elapsed="0.000441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:01.816553" elapsed="0.001350">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:01.818056" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:01.771193" elapsed="0.046983">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:01.818355" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:01.769839" elapsed="0.048627">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:01.768743" elapsed="0.049820">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:02.830899" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:02.827126" elapsed="0.006395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:02.833934" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:02.833678" elapsed="0.000334"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:02.833646" elapsed="0.000400"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:02.834119" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:02.825966" elapsed="0.008317">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:02.834533" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:02.834629" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:02.824635" elapsed="0.010134">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:02.835028" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:02.835124" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:02.823254" elapsed="0.011907"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:02.835406" elapsed="0.036168"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:02.872602" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:02.872465" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:02.872440" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:02.873226" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:02.872839" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:02.872023" elapsed="0.001470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:02.873554" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:02.821947" elapsed="0.051707">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:02.873831" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:02.820583" elapsed="0.053359">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:02.819541" elapsed="0.054495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:03.887039" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:03.881944" elapsed="0.007123">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:03.889469" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:03.889227" elapsed="0.000301"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:03.889195" elapsed="0.000359"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:03.889592" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:03.880932" elapsed="0.008788">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:03.889940" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:03.890015" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:03.879649" elapsed="0.010486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:03.890271" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:03.890318" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:03.878449" elapsed="0.011894"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:03.890508" elapsed="0.033428"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:03.925142" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:03.924980" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:03.924954" elapsed="0.000260"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:03.925813" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:03.925381" elapsed="0.000508">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:03.924547" elapsed="0.001457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:03.926069" elapsed="0.000036"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:03.877288" elapsed="0.048906">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:03.926373" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:03.875879" elapsed="0.050606">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:03.874774" elapsed="0.051809">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:04.938958" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:04.934736" elapsed="0.006188">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:04.941276" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:04.941058" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:04.941028" elapsed="0.000333"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:04.941400" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:04.933539" elapsed="0.007985">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:04.941709" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:04.941793" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:04.932180" elapsed="0.009769">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:04.942165" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:04.942213" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:04.930975" elapsed="0.011263"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:04.942408" elapsed="0.035301"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:04.978735" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:04.978600" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:04.978575" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:04.979355" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:04.978967" elapsed="0.000462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:04.978181" elapsed="0.001360">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:04.979600" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:04.929848" elapsed="0.049850">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:04.979873" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:04.928435" elapsed="0.051548">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:04.927487" elapsed="0.052592">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:05.992538" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:05.987951" elapsed="0.006574">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:05.994846" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:05.994658" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:05.994623" elapsed="0.000305"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:05.994966" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:05.986969" elapsed="0.008115">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:05.995279" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:05.995408" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:05.985736" elapsed="0.009775">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:05.995626" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:05.995672" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:05.984441" elapsed="0.011255"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:05.995860" elapsed="0.032396"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:06.029260" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:06.029128" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:06.029103" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:06.029918" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:06.029547" elapsed="0.000446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:06.028696" elapsed="0.001429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:06.030188" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:05.983317" elapsed="0.046969">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:06.030477" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:05.982024" elapsed="0.048564">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:05.980898" elapsed="0.049784">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:07.044056" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:07.038948" elapsed="0.007023">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:07.046342" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:07.046116" elapsed="0.000283"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:07.046072" elapsed="0.000416"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:07.046531" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:07.037853" elapsed="0.008801">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:07.046839" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:07.046906" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:07.036547" elapsed="0.010459">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:07.047165" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:07.047213" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:07.035277" elapsed="0.011960"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:07.047405" elapsed="0.036718"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:07.085255" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:07.085075" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:07.085047" elapsed="0.000285"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:07.085913" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:07.085505" elapsed="0.000498">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:07.084602" elapsed="0.001545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:07.086246" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:07.033955" elapsed="0.052395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:07.086531" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:07.032602" elapsed="0.054043">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:07.031582" elapsed="0.055162">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:08.099300" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:08.095629" elapsed="0.006340">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:08.102489" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:08.102229" elapsed="0.000398"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:08.102195" elapsed="0.000475"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:08.102723" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:08.094810" elapsed="0.008080">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:08.103155" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:08.103228" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:08.093217" elapsed="0.010114">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:08.103451" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:08.103497" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:08.091642" elapsed="0.011879"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:08.103700" elapsed="0.030797"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:08.135621" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:08.135487" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:08.135461" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:08.136232" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:08.135852" elapsed="0.000454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:08.135017" elapsed="0.001401">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:08.136478" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:08.090353" elapsed="0.046224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:08.136754" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:08.088778" elapsed="0.048085">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:08.087736" elapsed="0.049222">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:09.147317" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:09.143697" elapsed="0.006428">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:09.150568" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:09.150296" elapsed="0.000353"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:09.150260" elapsed="0.000426"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:09.150738" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:09.143035" elapsed="0.007871">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:09.151197" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:09.151299" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:09.142241" elapsed="0.009224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:09.151636" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:09.151705" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:09.141426" elapsed="0.010315"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:09.151987" elapsed="0.033619"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:09.186691" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:09.186535" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:09.186510" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:09.187339" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:09.186931" elapsed="0.000485">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:09.186073" elapsed="0.001460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:09.187594" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:09.140307" elapsed="0.047387">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:09.187869" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:09.138748" elapsed="0.049231">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:09.137774" elapsed="0.050393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:10.200917" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:10.196747" elapsed="0.006138">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:10.203240" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:10.203014" elapsed="0.000284"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:10.202986" elapsed="0.000339"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:10.203363" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:10.195656" elapsed="0.007831">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:10.203681" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:10.203754" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:10.194322" elapsed="0.009536">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:10.203981" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:10.204027" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:10.192978" elapsed="0.011074"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:10.204245" elapsed="0.034495"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:10.239809" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:10.239665" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:10.239640" elapsed="0.000260"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:10.240526" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:10.240110" elapsed="0.000495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:10.239233" elapsed="0.001487">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:10.240781" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:10.191639" elapsed="0.049240">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:10.241153" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:10.190293" elapsed="0.050974">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:10.189060" elapsed="0.052302">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:11.253823" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:11.249230" elapsed="0.006486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:11.256019" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:11.255835" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:11.255810" elapsed="0.000308"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:11.256156" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:11.248205" elapsed="0.008068">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:11.256452" elapsed="0.000037"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:11.256537" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:11.246930" elapsed="0.009708">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:11.256756" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:11.256801" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:11.245713" elapsed="0.011113"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:11.256991" elapsed="0.032067"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:11.290059" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:11.289925" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:11.289901" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:11.290735" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:11.290309" elapsed="0.000512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:11.289513" elapsed="0.001427">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:11.291156" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:11.244518" elapsed="0.046751">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:11.291468" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:11.243241" elapsed="0.048345">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:11.242242" elapsed="0.049445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:12.303382" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:12.300300" elapsed="0.005308">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:12.305943" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:12.305740" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:12.305712" elapsed="0.000315"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:12.306065" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:12.299386" elapsed="0.006823">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:12.306397" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:12.306476" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:12.297987" elapsed="0.008621">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:12.306755" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:12.306801" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:12.296587" elapsed="0.010238"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:12.306993" elapsed="0.037848"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:12.345890" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:12.345751" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:12.345725" elapsed="0.000235"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:12.346542" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:12.346145" elapsed="0.000480">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:12.345319" elapsed="0.001559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:12.346945" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:12.295328" elapsed="0.051719">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:12.347255" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:12.293970" elapsed="0.053401">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:12.292941" elapsed="0.054529">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:13.360997" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:13.356052" elapsed="0.007415">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:13.363903" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:13.363639" elapsed="0.000329"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:13.363600" elapsed="0.000403"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:13.364054" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:13.354957" elapsed="0.009295">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:13.364476" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:13.364557" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:13.353560" elapsed="0.011118">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:13.364823" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:13.364874" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:13.352278" elapsed="0.012624"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:13.365125" elapsed="0.035529"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:13.401692" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:13.401556" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:13.401531" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:13.402529" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:13.401956" elapsed="0.000648">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:13.401136" elapsed="0.001585">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:13.402783" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:13.351007" elapsed="0.051875">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:13.403059" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:13.349666" elapsed="0.053536">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:13.348633" elapsed="0.054668">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:14.416143" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:14.411629" elapsed="0.006400">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:14.418345" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:14.418162" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:14.418136" elapsed="0.000290"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:14.418462" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:14.410600" elapsed="0.007978">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:14.418757" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:14.418825" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:14.409070" elapsed="0.009854">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:14.419040" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:14.419086" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:14.407903" elapsed="0.011224"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:14.419359" elapsed="0.031058"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:14.451418" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:14.451283" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:14.451259" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:14.452009" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:14.451646" elapsed="0.000440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:14.450858" elapsed="0.001361">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:14.452285" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:14.406746" elapsed="0.045636">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:14.452571" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:14.404998" elapsed="0.047683">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:14.404035" elapsed="0.048742">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:15.461770" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:15.457914" elapsed="0.006032">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:15.464322" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:15.464069" elapsed="0.000319"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:15.464041" elapsed="0.000375"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:15.464454" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:15.457306" elapsed="0.007268">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:15.464761" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:15.464836" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:15.456531" elapsed="0.008408">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:15.465142" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:15.465189" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:15.455758" elapsed="0.009455"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:15.465387" elapsed="0.038486"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:15.504952" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:15.504811" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:15.504785" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:15.505601" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:15.505213" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:15.504368" elapsed="0.001496">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:15.505937" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:15.455003" elapsed="0.051037">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:15.506291" elapsed="0.000030"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:15.454178" elapsed="0.052239">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:15.453514" elapsed="0.053000">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:16.519698" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:16.514203" elapsed="0.007619">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:16.522370" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:16.522040" elapsed="0.000397"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:16.522000" elapsed="0.000466"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:16.522529" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:16.513179" elapsed="0.009514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:16.522983" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:16.523054" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:16.511961" elapsed="0.011234">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:16.523379" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:16.523427" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:16.510779" elapsed="0.012672"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:16.523622" elapsed="0.040049"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:16.564730" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:16.564591" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:16.564566" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:16.565420" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:16.564965" elapsed="0.000535">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:16.564164" elapsed="0.001453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:16.565678" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:16.509548" elapsed="0.056232">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:16.565956" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:16.508315" elapsed="0.057751">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:16.507364" elapsed="0.058820">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:17.575345" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:17.571435" elapsed="0.006519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:17.578502" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:17.578229" elapsed="0.000353"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:17.578190" elapsed="0.000429"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:17.578671" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:17.570713" elapsed="0.008124">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:17.579108" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:17.579206" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:17.569834" elapsed="0.009513">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:17.579511" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:17.579573" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:17.568970" elapsed="0.010637"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:17.579850" elapsed="0.037457"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:17.618359" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:17.618220" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:17.618194" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:17.619010" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:17.618603" elapsed="0.000504">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:17.617773" elapsed="0.001469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:17.619303" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:17.568221" elapsed="0.051185">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:17.619582" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:17.567327" elapsed="0.052366">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:17.566755" elapsed="0.053031">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:18.631142" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:18.627528" elapsed="0.005584">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:18.633435" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:18.633239" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:18.633212" elapsed="0.000306"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:18.633556" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:18.626515" elapsed="0.007159">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:18.633856" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:18.633924" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:18.625286" elapsed="0.008740">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:18.634161" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:18.634208" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:18.624054" elapsed="0.010178"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:18.634397" elapsed="0.035074"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:18.670493" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:18.670352" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:18.670327" elapsed="0.000237"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:18.671134" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:18.670725" elapsed="0.000487">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:18.669916" elapsed="0.001412">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:18.671389" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:18.622884" elapsed="0.048605">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:18.671663" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:18.621619" elapsed="0.050186">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:18.620636" elapsed="0.051269">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:19.678925" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:19.675763" elapsed="0.006523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:19.682633" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:19.682419" elapsed="0.000273"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:19.682391" elapsed="0.000327"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:19.682755" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:19.675314" elapsed="0.007564">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:19.683066" elapsed="0.000038"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:19.683153" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:19.674751" elapsed="0.008506">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:19.683414" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:19.683483" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:19.674193" elapsed="0.009322"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:19.683777" elapsed="0.033005"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:19.717795" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:19.717659" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:19.717634" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:19.718403" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:19.718025" elapsed="0.000453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:19.717241" elapsed="0.001497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:19.718800" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:19.673665" elapsed="0.045236">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:19.719076" elapsed="0.000036"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:19.673060" elapsed="0.046144">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:19.672557" elapsed="0.046822">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:20.729208" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:20.725377" elapsed="0.006019">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:20.731721" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:20.731525" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:20.731497" elapsed="0.000308"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:20.731843" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:20.724728" elapsed="0.007237">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:20.732175" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:20.732260" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:20.723834" elapsed="0.008530">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:20.732485" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:20.732531" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:20.722749" elapsed="0.009806"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:20.732721" elapsed="0.037498"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:20.771767" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:20.771590" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:20.771557" elapsed="0.000307"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:20.772507" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:20.772102" elapsed="0.000482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:20.771010" elapsed="0.001702">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:20.772777" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:20.721898" elapsed="0.050979">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:20.773142" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:20.720769" elapsed="0.052490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:20.720054" elapsed="0.053304">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:21.786228" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:21.781307" elapsed="0.006865">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:21.788479" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:21.788292" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:21.788267" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:21.788599" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:21.780318" elapsed="0.008398">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:21.788897" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:21.788965" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:21.779067" elapsed="0.009999">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:21.789201" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:21.789248" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:21.777776" elapsed="0.011497"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:21.789438" elapsed="0.033298"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:21.823803" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:21.823650" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:21.823625" elapsed="0.000252"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:21.824451" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:21.824044" elapsed="0.000486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:21.823210" elapsed="0.001445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:21.824797" elapsed="0.000021"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:21.776630" elapsed="0.048276">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:21.825102" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:21.775376" elapsed="0.049841">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:21.774281" elapsed="0.051033">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:22.832983" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:22.829813" elapsed="0.005083">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:22.835226" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:22.835020" elapsed="0.000319"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:22.834994" elapsed="0.000373"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:22.835404" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:22.829315" elapsed="0.006213">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:22.835713" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:22.835783" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:22.828622" elapsed="0.007265">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:22.836007" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:22.836068" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:22.827917" elapsed="0.008207"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:22.836300" elapsed="0.030735"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:22.868061" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:22.867927" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:22.867903" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:22.868673" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:22.868309" elapsed="0.000449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:22.867515" elapsed="0.001429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:22.869006" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:22.827277" elapsed="0.041847">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:22.869301" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:22.826585" elapsed="0.042829">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:22.825959" elapsed="0.043550">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:23.882345" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:23.877418" elapsed="0.006820">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:23.884560" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:23.884359" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:23.884334" elapsed="0.000333"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:23.884705" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:23.876228" elapsed="0.008608">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:23.885054" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:23.885144" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:23.874920" elapsed="0.010325">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:23.885363" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:23.885408" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:23.873746" elapsed="0.011686"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:23.885595" elapsed="0.030149"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:23.916878" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:23.916683" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:23.916659" elapsed="0.000288"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:23.917496" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:23.917125" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:23.916270" elapsed="0.001468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:23.917822" elapsed="0.000024"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:23.872559" elapsed="0.045397">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:23.918202" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:23.871312" elapsed="0.047034">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:23.870361" elapsed="0.048114">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:24.926351" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:24.923515" elapsed="0.004912">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:24.928833" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:24.928550" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:24.928524" elapsed="0.000430"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:24.929005" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:24.922956" elapsed="0.006263">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:24.929485" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:24.929582" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:24.922361" elapsed="0.007363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:24.929960" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:24.930026" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:24.921650" elapsed="0.008410"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:24.930318" elapsed="0.036653"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:24.968037" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:24.967900" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:24.967873" elapsed="0.000255"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:24.968663" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:24.968292" elapsed="0.000447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:24.967461" elapsed="0.001395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:24.968918" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:24.920983" elapsed="0.048036">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:24.969214" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:24.920229" elapsed="0.049099">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:24.919596" elapsed="0.049830">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:25.981670" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:25.977445" elapsed="0.007044">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:25.984958" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:25.984672" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:25.984633" elapsed="0.000446"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:25.985158" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:25.976363" elapsed="0.008976">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:25.985665" elapsed="0.000046"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:25.985972" elapsed="0.000038"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:25.975043" elapsed="0.011138">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:25.986400" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:25.986472" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:25.973795" elapsed="0.012715"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:25.986766" elapsed="0.039647"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:26.027528" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:26.027391" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:26.027363" elapsed="0.000238"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:26.028168" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:26.027769" elapsed="0.000477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:26.026913" elapsed="0.001463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:26.028440" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:25.972653" elapsed="0.055888">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:26.028719" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:25.971356" elapsed="0.057476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:25.970300" elapsed="0.058628">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:27.041629" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:27.036804" elapsed="0.006728">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:27.043844" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:27.043653" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:27.043627" elapsed="0.000362"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:27.044031" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:27.035810" elapsed="0.008360">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:27.044351" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:27.044417" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:27.034589" elapsed="0.009928">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:27.044635" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:27.044680" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:27.033306" elapsed="0.011398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:27.044866" elapsed="0.036180"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:27.082222" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:27.082061" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:27.082034" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:27.082841" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:27.082463" elapsed="0.000454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:27.081567" elapsed="0.001471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:27.083133" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:27.032166" elapsed="0.051075">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:27.083422" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:27.030872" elapsed="0.052679">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:27.029828" elapsed="0.053845">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:28.096741" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:28.092493" elapsed="0.006170">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:28.099103" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:28.098874" elapsed="0.000290"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:28.098846" elapsed="0.000344"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:28.099228" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:28.091369" elapsed="0.007983">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:28.099536" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:28.099605" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:28.089915" elapsed="0.009791">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:28.099832" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:28.099878" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:28.088477" elapsed="0.011425"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:28.100068" elapsed="0.037359"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:28.138641" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:28.138503" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:28.138477" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:28.139277" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:28.138883" elapsed="0.000469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:28.137886" elapsed="0.001583">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:28.139529" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:28.087202" elapsed="0.052425">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:28.139807" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:28.085711" elapsed="0.054206">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:28.084631" elapsed="0.055381">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:29.153538" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:29.148646" elapsed="0.006817">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:29.155777" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:29.155587" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:29.155561" elapsed="0.000299"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:29.155898" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:29.147479" elapsed="0.008539">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:29.156214" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:29.156282" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:29.146028" elapsed="0.010354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:29.156501" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:29.156546" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:29.144821" elapsed="0.011749"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:29.156754" elapsed="0.034555"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:29.192355" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:29.192220" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:29.192195" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:29.193004" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:29.192611" elapsed="0.000470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:29.191774" elapsed="0.001446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:29.193283" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:29.143661" elapsed="0.049725">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:29.193565" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:29.141905" elapsed="0.051773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:29.140867" elapsed="0.052984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:30.206361" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:30.202238" elapsed="0.006724">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:30.209406" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:30.209149" elapsed="0.000335"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:30.209112" elapsed="0.000409"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:30.209572" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:30.201246" elapsed="0.008490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:30.209985" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:30.210079" elapsed="0.000040"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:30.199843" elapsed="0.010396">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:30.210398" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:30.210462" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:30.198564" elapsed="0.011934"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:30.210729" elapsed="0.031871"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:30.243610" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:30.243460" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:30.243436" elapsed="0.000243"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:30.244221" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:30.243838" elapsed="0.000456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:30.243032" elapsed="0.001376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:30.244470" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:30.197334" elapsed="0.047234">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:30.244809" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:30.195886" elapsed="0.049034">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:30.194771" elapsed="0.050244">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:31.255180" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:31.250778" elapsed="0.007485">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:31.258806" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:31.258485" elapsed="0.000430"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:31.258442" elapsed="0.000521"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:31.259022" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:31.249888" elapsed="0.009352">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:31.259522" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:31.259625" elapsed="0.000040"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:31.248891" elapsed="0.010984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:31.260134" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:31.260214" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:31.248057" elapsed="0.012194"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:31.260506" elapsed="0.033845"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:31.295491" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:31.295354" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:31.295329" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:31.296112" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:31.295723" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:31.294883" elapsed="0.001420">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:31.296437" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:31.247310" elapsed="0.049231">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:31.296716" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:31.246441" elapsed="0.050391">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:31.245725" elapsed="0.051224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:32.309155" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:32.305533" elapsed="0.005532">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:32.311393" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:32.311205" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:32.311180" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:32.311510" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:32.304329" elapsed="0.007298">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:32.311822" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:32.311893" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:32.302963" elapsed="0.009033">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:32.312133" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:32.312181" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:32.301716" elapsed="0.010490"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:32.312375" elapsed="0.030156"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:32.343541" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:32.343407" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:32.343382" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:32.344146" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:32.343771" elapsed="0.000448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:32.342975" elapsed="0.001428">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:32.344465" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:32.300360" elapsed="0.044204">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:32.344740" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:32.299045" elapsed="0.045808">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:32.297782" elapsed="0.047173">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:33.356611" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:33.352897" elapsed="0.006421">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:33.359784" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:33.359483" elapsed="0.000395"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:33.359450" elapsed="0.000496"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:33.360019" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:33.351708" elapsed="0.008516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:33.360524" elapsed="0.000035"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:33.360629" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:33.350481" elapsed="0.010302">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:33.360955" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:33.361025" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:33.349319" elapsed="0.011743"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:33.361337" elapsed="0.031811"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:33.394150" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:33.393999" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:33.393975" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:33.394816" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:33.394376" elapsed="0.000513">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:33.393591" elapsed="0.001411">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:33.395063" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:33.348156" elapsed="0.047024">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:33.395356" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:33.346769" elapsed="0.048698">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:33.345800" elapsed="0.049765">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:34.407891" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:34.403363" elapsed="0.006509">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:34.410226" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:34.410020" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:34.409991" elapsed="0.000319"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:34.410348" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:34.402344" elapsed="0.008124">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:34.410663" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:34.410731" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:34.401154" elapsed="0.009701">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:34.410981" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:34.411025" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:34.399959" elapsed="0.011090"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:34.411289" elapsed="0.036069"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:34.448379" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:34.448244" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:34.448220" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:34.448974" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:34.448609" elapsed="0.000437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:34.447807" elapsed="0.001368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:34.449238" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:34.398801" elapsed="0.050535">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:34.449510" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:34.397462" elapsed="0.052156">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:34.396444" elapsed="0.053271">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:35.458866" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:35.455233" elapsed="0.006251">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:35.461901" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:35.461649" elapsed="0.000330"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:35.461614" elapsed="0.000400"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:35.462065" elapsed="0.000042"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:35.454607" elapsed="0.007644">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:35.462501" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:35.462595" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:35.453814" elapsed="0.008921">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:35.462974" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:35.463037" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:35.453009" elapsed="0.010062"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:35.463439" elapsed="0.036037"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:35.500552" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:35.500414" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:35.500388" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:35.501279" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:35.500832" elapsed="0.000527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:35.499962" elapsed="0.001516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:35.501540" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:35.452248" elapsed="0.049391">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:35.501817" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:35.451399" elapsed="0.050529">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:35.450517" elapsed="0.051532">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:36.512536" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:36.508950" elapsed="0.006543">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:36.515961" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:36.515671" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:36.515630" elapsed="0.000455"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:36.516166" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:36.508317" elapsed="0.008023">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:36.516718" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:36.516821" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:36.507334" elapsed="0.009638">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:36.517175" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:36.517248" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:36.506225" elapsed="0.011063"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:36.517541" elapsed="0.043952"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:36.562608" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:36.562470" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:36.562445" elapsed="0.000235"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:36.563278" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:36.562852" elapsed="0.000505">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:36.561992" elapsed="0.001483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:36.563536" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:36.505250" elapsed="0.058388">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:36.563816" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:36.503980" elapsed="0.059948">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:36.502936" elapsed="0.061091">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:37.576110" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:37.571900" elapsed="0.006078">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:37.578365" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:37.578177" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:37.578152" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:37.578484" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:37.570919" elapsed="0.007680">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:37.578778" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:37.578846" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:37.569657" elapsed="0.009290">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:37.579063" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:37.579126" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:37.568451" elapsed="0.010701"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:37.579318" elapsed="0.029863"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:37.610183" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:37.610031" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:37.610008" elapsed="0.000243"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:37.610765" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:37.610410" elapsed="0.000428">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:37.609614" elapsed="0.001335">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:37.611009" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:37.567342" elapsed="0.043783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:37.611300" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:37.565895" elapsed="0.045514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:37.564895" elapsed="0.046608">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:38.623112" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:38.619363" elapsed="0.005691">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:38.625379" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:38.625195" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:38.625170" elapsed="0.000290"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:38.625497" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:38.618228" elapsed="0.007386">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:38.625793" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:38.625860" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:38.616981" elapsed="0.008979">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:38.626077" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:38.626143" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:38.615775" elapsed="0.010393"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:38.626332" elapsed="0.032057"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:38.659436" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:38.659300" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:38.659275" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:38.660032" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:38.659665" elapsed="0.000459">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:38.658844" elapsed="0.001394">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:38.660301" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:38.614647" elapsed="0.045772">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:38.660597" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:38.613398" elapsed="0.047308">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:38.612426" elapsed="0.048376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:39.672689" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:39.668955" elapsed="0.006516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:39.675916" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:39.675646" elapsed="0.000354"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:39.675610" elapsed="0.000428"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:39.676118" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:39.668262" elapsed="0.008037">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:39.676566" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:39.676664" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:39.666918" elapsed="0.009895">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:39.676990" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:39.677057" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:39.665611" elapsed="0.011503"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:39.677363" elapsed="0.042640"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:39.721126" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:39.720970" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:39.720945" elapsed="0.000254"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:39.721762" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:39.721371" elapsed="0.000471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:39.720533" elapsed="0.001440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:39.722035" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:39.664380" elapsed="0.057771">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:39.722330" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:39.662885" elapsed="0.059559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:39.661819" elapsed="0.060822">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:40.735393" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:40.730686" elapsed="0.006691">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:40.737741" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:40.737513" elapsed="0.000287"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:40.737484" elapsed="0.000341"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:40.737862" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:40.729672" elapsed="0.008315">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:40.738232" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:40.738304" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:40.728458" elapsed="0.009950">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:40.738546" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:40.738592" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:40.727256" elapsed="0.011361"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:40.738802" elapsed="0.040134"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:40.780385" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:40.780203" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:40.780168" elapsed="0.000314"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:40.781235" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:40.780706" elapsed="0.000631">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:40.779604" elapsed="0.001889">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:40.781578" elapsed="0.000023"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:40.725982" elapsed="0.055767">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:40.782117" elapsed="0.000033"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:40.724730" elapsed="0.057548">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:40.723771" elapsed="0.058646">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:41.793751" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:41.789939" elapsed="0.006441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:41.796786" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:41.796539" elapsed="0.000325"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:41.796505" elapsed="0.000393"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:41.796948" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:41.788952" elapsed="0.008179">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:41.797381" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:41.797477" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:41.787758" elapsed="0.009857">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:41.797773" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:41.797837" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:41.786588" elapsed="0.011283"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:41.798147" elapsed="0.032482"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:41.831634" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:41.831501" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:41.831476" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:41.832251" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:41.831864" elapsed="0.000462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:41.831072" elapsed="0.001368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:41.832575" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:41.785448" elapsed="0.047230">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:41.832908" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:41.784209" elapsed="0.048815">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:41.783259" elapsed="0.049878">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:42.842333" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:42.838713" elapsed="0.006268">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:42.845434" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:42.845178" elapsed="0.000335"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:42.845140" elapsed="0.000409"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:42.845601" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:42.837877" elapsed="0.007892">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:42.846018" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:42.846133" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:42.837073" elapsed="0.009203">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:42.846435" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:42.846499" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:42.836309" elapsed="0.010224"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:42.846763" elapsed="0.035859"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:42.883718" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:42.883566" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:42.883540" elapsed="0.000254"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:42.884368" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:42.883961" elapsed="0.000484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:42.883122" elapsed="0.001607">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:42.884794" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:42.835501" elapsed="0.049394">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:42.885072" elapsed="0.000046"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:42.834620" elapsed="0.050594">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:42.833781" elapsed="0.051531">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:43.897244" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:43.893697" elapsed="0.006218">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:43.900350" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:43.900078" elapsed="0.000353"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:43.900043" elapsed="0.000424"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:43.900520" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:43.892976" elapsed="0.007707">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:43.900933" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:43.901028" elapsed="0.000090"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:43.891957" elapsed="0.009304">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:43.901442" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:43.901505" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:43.890528" elapsed="0.011012"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:43.901801" elapsed="0.043251"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:43.946455" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:43.946223" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:43.946190" elapsed="0.000373"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:43.947341" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:43.946789" elapsed="0.000691">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:43.945645" elapsed="0.002009">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:43.947738" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:43.888934" elapsed="0.058946">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:43.948151" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:43.887593" elapsed="0.060717">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:43.886376" elapsed="0.062070">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:44.960212" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:44.956506" elapsed="0.006874">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:44.963957" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:44.963582" elapsed="0.000479"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:44.963540" elapsed="0.000592"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:44.964211" elapsed="0.000031"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:44.955573" elapsed="0.008856">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:44.964779" elapsed="0.000038"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:44.964898" elapsed="0.000029"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:44.954226" elapsed="0.010857">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:44.965409" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:44.965504" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:44.952961" elapsed="0.012589"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:44.965866" elapsed="0.048489"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:45.015663" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:45.015527" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:45.015502" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:45.016292" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:45.015898" elapsed="0.000470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:45.014969" elapsed="0.001515">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:45.016543" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:44.951750" elapsed="0.064890">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:45.016815" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:44.950430" elapsed="0.066493">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:44.949377" elapsed="0.067639">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:46.028180" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:46.022565" elapsed="0.009753">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:46.032787" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:46.032507" elapsed="0.000398"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:46.032466" elapsed="0.000499"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:46.033025" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:46.021786" elapsed="0.011449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:46.033517" elapsed="0.000041"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:46.033741" elapsed="0.000034"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:46.020998" elapsed="0.012940">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:46.034202" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:46.034275" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:46.020236" elapsed="0.014079"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:46.034611" elapsed="0.036538"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:46.072459" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:46.072276" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:46.072242" elapsed="0.000311"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:46.073294" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:46.072774" elapsed="0.000621">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:46.071688" elapsed="0.001865">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:46.073638" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:46.019456" elapsed="0.054320">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:46.074025" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:46.018526" elapsed="0.055680">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:46.017749" elapsed="0.056593">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:47.086012" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:47.082869" elapsed="0.005108">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:47.088316" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:47.088122" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:47.088080" elapsed="0.000571"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:47.088695" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:47.081710" elapsed="0.007112">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:47.089007" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:47.089076" elapsed="0.000030"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:47.080392" elapsed="0.008809">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:47.089332" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:47.089381" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:47.079072" elapsed="0.010336"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:47.089573" elapsed="0.039856"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:47.130634" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:47.130412" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:47.130381" elapsed="0.000323"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:47.131483" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:47.130882" elapsed="0.000792">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:47.129933" elapsed="0.001884">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:47.131881" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:47.077803" elapsed="0.054200">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:47.132228" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:47.076431" elapsed="0.055913">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:47.075374" elapsed="0.057067">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:48.143529" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:48.139992" elapsed="0.006328">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:48.146834" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:48.146570" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:48.146533" elapsed="0.000422"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:48.147008" elapsed="0.000077"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:48.139327" elapsed="0.007936">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:48.147532" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:48.147635" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:48.138008" elapsed="0.009778">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:48.147955" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:48.148024" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:48.136824" elapsed="0.011237"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:48.148330" elapsed="0.032701"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:48.182041" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:48.181908" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:48.181883" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:48.182645" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:48.182285" elapsed="0.000434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:48.181490" elapsed="0.001343">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:48.182893" elapsed="0.000054"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:48.135674" elapsed="0.047358">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:48.183226" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:48.134197" elapsed="0.049141">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:48.133251" elapsed="0.050181">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:49.195390" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:49.191708" elapsed="0.005894">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:49.197912" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:49.197726" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:49.197699" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:49.198033" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:49.190714" elapsed="0.007456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:49.198352" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:49.198419" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:49.189485" elapsed="0.009035">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:49.198637" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:49.198682" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:49.188260" elapsed="0.010446"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:49.198873" elapsed="0.036767"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:49.236769" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:49.236632" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:49.236606" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:49.237395" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:49.237001" elapsed="0.000476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:49.236156" elapsed="0.001437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:49.237653" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:49.186927" elapsed="0.050823">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:49.237924" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:49.185432" elapsed="0.052601">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:49.184320" elapsed="0.053916">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:50.249501" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:50.246074" elapsed="0.007181">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:50.253988" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:50.253531" elapsed="0.000610"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:50.253469" elapsed="0.000736"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:50.254288" elapsed="0.000035"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:50.245219" elapsed="0.009329">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:50.254955" elapsed="0.000044"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:50.255085" elapsed="0.000062"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:50.243876" elapsed="0.011450">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:50.255576" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:50.255664" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:50.242674" elapsed="0.013038"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:50.256028" elapsed="0.038920"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:50.295952" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:50.295818" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:50.295793" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:50.296566" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:50.296196" elapsed="0.000446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:50.295403" elapsed="0.001352">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:50.296835" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:50.241529" elapsed="0.055405">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:50.297227" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:50.240196" elapsed="0.057145">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:50.239074" elapsed="0.058363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:51.310164" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:51.304978" elapsed="0.007190">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:51.312497" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:51.312305" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:51.312274" elapsed="0.000306"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:51.312617" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:51.303769" elapsed="0.008967">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:51.312917" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:51.312984" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:51.302282" elapsed="0.010801">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:51.313220" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:51.313265" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:51.300985" elapsed="0.012304"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:51.313455" elapsed="0.035251"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:51.349718" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:51.349582" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:51.349558" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:51.350365" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:51.349949" elapsed="0.000491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:51.349166" elapsed="0.001386">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:51.350771" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:51.299854" elapsed="0.051024">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:51.351056" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:51.299026" elapsed="0.052165">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:51.298313" elapsed="0.052976">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:52.363168" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:52.359533" elapsed="0.005602">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:52.365446" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:52.365260" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:52.365234" elapsed="0.000296"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:52.365569" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:52.358511" elapsed="0.007175">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:52.365869" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:52.365940" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:52.357176" elapsed="0.008867">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:52.366178" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:52.366226" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:52.355860" elapsed="0.010392"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:52.366422" elapsed="0.035973"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:52.403417" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:52.403282" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:52.403257" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:52.404044" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:52.403646" elapsed="0.000491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:52.402848" elapsed="0.001475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:52.404385" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:52.354680" elapsed="0.049806">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:52.404663" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:52.353286" elapsed="0.051487">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:52.352274" elapsed="0.052596">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:53.416516" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:53.412781" elapsed="0.005643">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:53.418735" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:53.418543" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:53.418517" elapsed="0.000301"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:53.418856" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:53.411794" elapsed="0.007179">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:53.419169" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:53.419237" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:53.410510" elapsed="0.008826">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:53.419453" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:53.419497" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:53.409291" elapsed="0.010230"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:53.419685" elapsed="0.032204"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:53.452895" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:53.452763" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:53.452739" elapsed="0.000223"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:53.453585" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:53.453143" elapsed="0.000517">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:53.452347" elapsed="0.001428">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:53.453836" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:53.408176" elapsed="0.045772">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:53.454138" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:53.406900" elapsed="0.047349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:53.405742" elapsed="0.048601">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:54.467551" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:54.462437" elapsed="0.007058">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:54.469802" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:54.469615" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:54.469589" elapsed="0.000296"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:54.469923" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:54.461323" elapsed="0.008721">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:54.470246" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:54.470317" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:54.459999" elapsed="0.010422">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:54.470563" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:54.470619" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:54.458748" elapsed="0.011896"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:54.470874" elapsed="0.032457"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:54.504432" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:54.504292" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:54.504266" elapsed="0.000237"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:54.505040" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:54.504667" elapsed="0.000470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:54.503809" elapsed="0.001465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:54.505341" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:54.457523" elapsed="0.047933">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:54.505688" elapsed="0.000031"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:54.456223" elapsed="0.049617">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:54.455197" elapsed="0.050773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:55.517997" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:55.514361" elapsed="0.005582">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:55.520286" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:55.520071" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:55.520044" elapsed="0.000327"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:55.520411" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:55.513333" elapsed="0.007203">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:55.520724" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:55.520792" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:55.511942" elapsed="0.008952">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:55.521081" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:55.521148" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:55.510561" elapsed="0.010613"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:55.521343" elapsed="0.034867"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:55.557240" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:55.557103" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:55.557063" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:55.557831" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:55.557469" elapsed="0.000436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:55.556667" elapsed="0.001349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:55.558077" elapsed="0.000033"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:55.509365" elapsed="0.048827">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:55.558368" elapsed="0.000035"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:55.507985" elapsed="0.050509">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:55.506927" elapsed="0.051664">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:56.569349" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:56.565796" elapsed="0.005474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:56.571583" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:56.571393" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:56.571367" elapsed="0.000297"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:56.571701" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:56.565172" elapsed="0.006656">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:56.572148" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:56.572219" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:56.564299" elapsed="0.008024">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:56.572444" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:56.572491" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:56.563471" elapsed="0.009045"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:56.572685" elapsed="0.033754"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:56.607448" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:56.607314" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:56.607290" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:56.608036" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:56.607676" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:56.606883" elapsed="0.001359">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:56.608304" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:56.562731" elapsed="0.045672">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:56.608581" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:56.561214" elapsed="0.047477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:56.559780" elapsed="0.049008">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:57.619086" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:57.615607" elapsed="0.006748">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:57.622904" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:57.622619" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:57.622579" elapsed="0.000471"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:57.623152" elapsed="0.000032"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:57.614944" elapsed="0.008405">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:57.623682" elapsed="0.000036"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:57.623789" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:57.614185" elapsed="0.009758">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:57.624144" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:57.624215" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:57.613391" elapsed="0.010859"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:57.624500" elapsed="0.040533"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:57.666068" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:57.665932" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:57.665908" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:57.666700" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:57.666320" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:57.665511" elapsed="0.001387">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:57.666960" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:57.612571" elapsed="0.054490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:57.667259" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:57.610915" elapsed="0.056458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:57.609707" elapsed="0.057763">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:58.676718" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:58.672785" elapsed="0.005972">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:58.679063" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:58.678878" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:58.678853" elapsed="0.000310"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:58.679200" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:58.672185" elapsed="0.007135">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:58.679502" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:58.679570" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:58.671411" elapsed="0.008261">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:58.679794" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:58.679841" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:58.670631" elapsed="0.009235"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:58.680032" elapsed="0.037560"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:58.718651" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:58.718514" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:58.718489" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:58.719299" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:58.718904" elapsed="0.000472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:58.718055" elapsed="0.001435">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:58.719552" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:58.669807" elapsed="0.049844">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:58.719828" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:58.668923" elapsed="0.051047">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:58.668226" elapsed="0.051891">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:22:59.731954" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:22:59.728119" elapsed="0.005712">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:59.734152" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:22:59.733954" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:22:59.733929" elapsed="0.000304"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:22:59.734269" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:22:59.727080" elapsed="0.007312">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:59.734570" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:22:59.734636" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:22:59.725867" elapsed="0.008870">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:22:59.734852" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:22:59.734898" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:22:59.724636" elapsed="0.010287"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:22:59.735101" elapsed="0.034535"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:22:59.770634" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:22:59.770501" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:22:59.770477" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:22:59.771239" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:22:59.770860" elapsed="0.000453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:22:59.770077" elapsed="0.001348">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:22:59.771485" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:22:59.723500" elapsed="0.048085">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:22:59.771758" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:22:59.722230" elapsed="0.049643">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:22:59.721037" elapsed="0.051006">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:00.783568" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:00.779330" elapsed="0.007226">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:00.787127" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:00.786759" elapsed="0.000466"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:00.786714" elapsed="0.000553"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:00.787326" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:00.778377" elapsed="0.009107">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:00.787712" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:00.787784" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:00.777146" elapsed="0.010745">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:00.788082" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:00.788150" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:00.776000" elapsed="0.012179"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:00.788422" elapsed="0.041300"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:00.830795" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:00.830658" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:00.830631" elapsed="0.000235"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:00.831424" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:00.831033" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:00.830220" elapsed="0.001391">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:00.831674" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:00.775026" elapsed="0.056746">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:00.832069" elapsed="0.000038"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:00.773930" elapsed="0.058269">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:00.772924" elapsed="0.059372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:01.843903" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:01.840211" elapsed="0.006328">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:01.847023" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:01.846707" elapsed="0.000422"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:01.846671" elapsed="0.000496"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:01.847221" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:01.839412" elapsed="0.007977">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:01.847643" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:01.847737" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:01.838003" elapsed="0.009887">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:01.848066" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:01.848157" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:01.836640" elapsed="0.011554"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:01.848430" elapsed="0.036051"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:01.885542" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:01.885403" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:01.885376" elapsed="0.000238"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:01.886190" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:01.885777" elapsed="0.000489">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:01.884935" elapsed="0.001449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:01.886557" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:01.835465" elapsed="0.051197">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:01.886842" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:01.834146" elapsed="0.052848">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:01.833178" elapsed="0.053938">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:02.900461" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:02.895977" elapsed="0.006422">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:02.902701" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:02.902517" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:02.902492" elapsed="0.000290"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:02.902819" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:02.894906" elapsed="0.008031">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:02.903131" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:02.903201" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:02.893193" elapsed="0.010108">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:02.903416" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:02.903462" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:02.891878" elapsed="0.011608"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:02.903651" elapsed="0.033482"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:02.938334" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:02.937990" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:02.937965" elapsed="0.000440"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:02.938987" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:02.938589" elapsed="0.000478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:02.937574" elapsed="0.001702">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:02.939338" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:02.890663" elapsed="0.048773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:02.939611" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:02.889165" elapsed="0.050557">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:02.887980" elapsed="0.051838">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:03.950554" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:03.947048" elapsed="0.006160">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:03.953633" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:03.953376" elapsed="0.000334"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:03.953340" elapsed="0.000407"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:03.953798" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:03.946442" elapsed="0.007520">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:03.954161" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:03.954230" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:03.945504" elapsed="0.008827">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:03.954453" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:03.954498" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:03.944205" elapsed="0.010318"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:03.954688" elapsed="0.032281"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:03.988038" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:03.987905" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:03.987880" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:03.988664" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:03.988285" elapsed="0.000458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:03.987496" elapsed="0.001369">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:03.988938" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:03.942964" elapsed="0.046088">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:03.989303" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:03.941701" elapsed="0.047719">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:03.940686" elapsed="0.048852">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:05.002646" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:04.997547" elapsed="0.007105">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:05.005003" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:05.004806" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:05.004773" elapsed="0.000314"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:05.005143" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:04.996492" elapsed="0.008772">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:05.005445" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:05.005513" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:04.995213" elapsed="0.010400">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:05.005796" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:05.005842" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:04.993977" elapsed="0.011890"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:05.006034" elapsed="0.037454"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:05.044626" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:05.044470" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:05.044440" elapsed="0.000266"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:05.045291" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:05.044875" elapsed="0.000495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:05.043971" elapsed="0.001519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:05.045553" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:04.992825" elapsed="0.052828">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:05.045831" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:04.991428" elapsed="0.054515">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:04.990435" elapsed="0.055612">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:06.058987" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:06.054212" elapsed="0.006696">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:06.061236" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:06.061027" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:06.061002" elapsed="0.000316"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:06.061356" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:06.053082" elapsed="0.008393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:06.061651" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:06.061786" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:06.051807" elapsed="0.010081">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:06.062003" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:06.062049" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:06.050594" elapsed="0.011480"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:06.062406" elapsed="0.035187"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:06.098612" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:06.098478" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:06.098454" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:06.099235" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:06.098846" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:06.098038" elapsed="0.001390">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:06.099490" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:06.049347" elapsed="0.050273">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:06.099800" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:06.048036" elapsed="0.051879">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:06.046913" elapsed="0.053101">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:07.110594" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:07.106595" elapsed="0.006950">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:07.114196" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:07.113759" elapsed="0.000557"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:07.113714" elapsed="0.000752"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:07.114556" elapsed="0.000036"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:07.105764" elapsed="0.009003">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:07.115126" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:07.115200" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:07.104761" elapsed="0.010545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:07.115454" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:07.115522" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:07.103881" elapsed="0.011670"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:07.115721" elapsed="0.044605"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:07.161453" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:07.161311" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:07.161286" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:07.162140" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:07.161731" elapsed="0.000490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:07.160856" elapsed="0.001484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:07.162402" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:07.103030" elapsed="0.059472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:07.162681" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:07.102084" elapsed="0.060732">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:07.100990" elapsed="0.061925">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:08.175472" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:08.170736" elapsed="0.006658">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:08.177780" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:08.177590" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:08.177564" elapsed="0.000298"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:08.177899" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:08.169656" elapsed="0.008359">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:08.178236" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:08.178307" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:08.168422" elapsed="0.009987">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:08.178525" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:08.178572" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:08.167223" elapsed="0.011374"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:08.178763" elapsed="0.039075"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:08.219045" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:08.218908" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:08.218881" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:08.219699" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:08.219313" elapsed="0.000465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:08.218469" elapsed="0.001426">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:08.219957" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:08.166008" elapsed="0.054051">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:08.220253" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:08.164746" elapsed="0.055618">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:08.163787" elapsed="0.056672">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:09.233087" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:09.229684" elapsed="0.005363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:09.235382" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:09.235191" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:09.235166" elapsed="0.000300"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:09.235503" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:09.228376" elapsed="0.007248">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:09.235804" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:09.235883" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:09.227054" elapsed="0.008933">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:09.236125" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:09.236173" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:09.225278" elapsed="0.010919"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:09.236366" elapsed="0.039008"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:09.276408" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:09.276273" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:09.276249" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:09.277130" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:09.276692" elapsed="0.000523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:09.275831" elapsed="0.001502">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:09.277425" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:09.224076" elapsed="0.053452">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:09.277705" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:09.222605" elapsed="0.055225">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:09.221473" elapsed="0.056524">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:10.291335" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:10.286947" elapsed="0.006346">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:10.293613" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:10.293418" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:10.293392" elapsed="0.000303"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:10.293732" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:10.285673" elapsed="0.008179">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:10.294031" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:10.294114" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:10.284278" elapsed="0.009938">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:10.294335" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:10.294380" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:10.282945" elapsed="0.011460"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:10.294570" elapsed="0.035019"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:10.330679" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:10.330532" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:10.330502" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:10.331325" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:10.330919" elapsed="0.000486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:10.330056" elapsed="0.001481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:10.331603" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:10.281675" elapsed="0.050029">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:10.331984" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:10.280021" elapsed="0.052093">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:10.278896" elapsed="0.053319">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:11.342835" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:11.339221" elapsed="0.006310">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:11.345842" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:11.345654" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:11.345628" elapsed="0.000297"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:11.345962" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:11.338477" elapsed="0.007606">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:11.346282" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:11.346352" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:11.337639" elapsed="0.008814">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:11.346573" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:11.346619" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:11.336613" elapsed="0.010030"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:11.346811" elapsed="0.033897"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:11.381708" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:11.381574" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:11.381550" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:11.382317" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:11.381937" elapsed="0.000453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:11.381164" elapsed="0.001337">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:11.382630" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:11.335378" elapsed="0.047356">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:11.382912" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:11.334076" elapsed="0.048948">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:11.333012" elapsed="0.050127">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:12.396123" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:12.391198" elapsed="0.006819">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:12.398340" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:12.398154" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:12.398128" elapsed="0.000294"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:12.398459" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:12.390195" elapsed="0.008380">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:12.398754" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:12.398822" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:12.388847" elapsed="0.010077">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:12.399040" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:12.399086" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:12.387606" elapsed="0.011519"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:12.399299" elapsed="0.035655"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:12.436045" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:12.435908" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:12.435882" elapsed="0.000252"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:12.436666" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:12.436296" elapsed="0.000445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:12.435453" elapsed="0.001494">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:12.437013" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:12.386428" elapsed="0.050704">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:12.437318" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:12.385076" elapsed="0.052355">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:12.384031" elapsed="0.053497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:13.449713" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:13.445266" elapsed="0.006363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:13.451937" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:13.451750" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:13.451724" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:13.452056" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:13.444198" elapsed="0.007997">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:13.452376" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:13.452443" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:13.442938" elapsed="0.009604">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:13.452661" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:13.452705" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:13.441760" elapsed="0.010968"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:13.452893" elapsed="0.033519"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:13.487462" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:13.487327" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:13.487302" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:13.488141" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:13.487690" elapsed="0.000526">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:13.486858" elapsed="0.001473">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:13.488392" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:13.440640" elapsed="0.047852">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:13.488667" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:13.439369" elapsed="0.049409">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:13.438369" elapsed="0.050504">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:14.501309" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:14.497017" elapsed="0.006270">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:14.503770" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:14.503574" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:14.503388" elapsed="0.000467"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:14.503893" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:14.496033" elapsed="0.007984">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:14.504218" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:14.504291" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:14.494756" elapsed="0.009639">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:14.504520" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:14.504567" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:14.493466" elapsed="0.011127"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:14.504839" elapsed="0.031730"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:14.537564" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:14.537430" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:14.537406" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:14.538171" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:14.537792" elapsed="0.000455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:14.537002" elapsed="0.001359">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:14.538421" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:14.492321" elapsed="0.046267">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:14.538765" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:14.490881" elapsed="0.047993">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:14.489742" elapsed="0.049227">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:15.782076" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:15.544637" elapsed="0.239481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:15.784516" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:15.784262" elapsed="0.000314"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:15.784230" elapsed="0.000372"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:15.784640" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:15.543830" elapsed="0.240935">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:15.784962" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:15.785031" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:15.543019" elapsed="0.242129">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:15.785350" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:15.785397" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:15.542225" elapsed="0.243197"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:15.785590" elapsed="0.033379"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:15.820002" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:15.819866" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:15.819841" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:15.820615" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:15.820249" elapsed="0.000439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:15.819446" elapsed="0.001355">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:15.820862" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:15.541403" elapsed="0.279558">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:15.821155" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:15.540484" elapsed="0.280783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:15.539721" elapsed="0.281647">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:16.830333" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:16.826712" elapsed="0.006229">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:16.833451" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:16.833135" elapsed="0.000404"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:16.833076" elapsed="0.000501"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:16.833628" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:16.826067" elapsed="0.007728">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:16.834179" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:16.834281" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:16.825186" elapsed="0.009231">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:16.834539" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:16.834584" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:16.824374" elapsed="0.010235"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:16.834779" elapsed="0.048698"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:16.884878" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:16.884732" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:16.884703" elapsed="0.000259"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:16.885828" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:16.885230" elapsed="0.000701">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:16.884133" elapsed="0.001981">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:16.886198" elapsed="0.000025"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:16.823599" elapsed="0.062743">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:16.886596" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:16.822744" elapsed="0.064011">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:16.822034" elapsed="0.064868">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:17.896300" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:17.892502" elapsed="0.006379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:17.899377" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:17.899167" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:17.899130" elapsed="0.000334"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:17.899502" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:17.891894" elapsed="0.007731">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:17.899803" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:17.899871" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:17.891174" elapsed="0.008796">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:17.900106" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:17.900155" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:17.890387" elapsed="0.009793"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:17.900346" elapsed="0.036734"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:17.938346" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:17.938208" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:17.938183" elapsed="0.000236"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:17.939118" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:17.938730" elapsed="0.000467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:17.937586" elapsed="0.001727">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:17.939372" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:17.889679" elapsed="0.049796">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:17.939649" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:17.888625" elapsed="0.051135">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:17.887753" elapsed="0.052101">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:18.951490" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:18.947684" elapsed="0.005812">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:18.953822" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:18.953622" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:18.953595" elapsed="0.000311"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:18.953943" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:18.946608" elapsed="0.007455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:18.954265" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:18.954333" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:18.945390" elapsed="0.009044">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:18.954557" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:18.954601" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:18.944171" elapsed="0.010454"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:18.954788" elapsed="0.039744"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:18.995580" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:18.995442" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:18.995415" elapsed="0.000236"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:18.996202" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:18.995815" elapsed="0.000464">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:18.994994" elapsed="0.001425">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:18.996490" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:18.943009" elapsed="0.053579">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:18.996762" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:18.941693" elapsed="0.055177">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:18.940741" elapsed="0.056232">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:20.009523" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:20.004793" elapsed="0.006744">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:20.011916" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:20.011674" elapsed="0.000302"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:20.011643" elapsed="0.000360"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:20.012041" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:20.003777" elapsed="0.008407">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:20.012368" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:20.012435" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:20.002545" elapsed="0.009991">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:20.012661" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:20.012707" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:20.001355" elapsed="0.011376"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:20.012895" elapsed="0.042221"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:20.056221" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:20.056068" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:20.056042" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:20.056920" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:20.056457" elapsed="0.000546">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:20.055592" elapsed="0.001545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:20.057199" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:20.000232" elapsed="0.057067">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:20.057475" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:19.998891" elapsed="0.058695">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:19.997906" elapsed="0.059851">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:21.084383" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:21.062998" elapsed="0.025476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:21.089183" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:21.088734" elapsed="0.000579"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:21.088680" elapsed="0.000688"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:21.089447" elapsed="0.000035"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:21.062349" elapsed="0.027352">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:21.090139" elapsed="0.000050"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:21.090294" elapsed="0.000035"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:21.061526" elapsed="0.028991">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:21.090774" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:21.090876" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:21.060718" elapsed="0.030213"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:21.091328" elapsed="0.043121"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:21.135561" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:21.135423" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:21.135396" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:21.136210" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:21.135804" elapsed="0.000484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:21.134923" elapsed="0.001483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:21.136472" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:21.059948" elapsed="0.076631">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:21.136836" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:21.059069" elapsed="0.077883">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:21.058412" elapsed="0.078700">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:22.149474" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:22.145357" elapsed="0.006146">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:22.151815" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:22.151629" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:22.151604" elapsed="0.000293"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:22.151933" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:22.144359" elapsed="0.007693">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:22.152249" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:22.152317" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:22.142978" elapsed="0.009439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:22.152542" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:22.152591" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:22.141753" elapsed="0.010862"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:22.152780" elapsed="0.034258"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:22.188133" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:22.187976" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:22.187950" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:22.188758" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:22.188378" elapsed="0.000457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:22.187537" elapsed="0.001420">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:22.189114" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:22.140426" elapsed="0.048797">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:22.189404" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:22.139129" elapsed="0.050390">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:22.138044" elapsed="0.051580">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:23.200322" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:23.196665" elapsed="0.006297">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:23.203394" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:23.203143" elapsed="0.000330"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:23.203089" elapsed="0.000418"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:23.203556" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:23.196035" elapsed="0.007681">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:23.204026" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:23.204154" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:23.195264" elapsed="0.009035">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:23.204460" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:23.204521" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:23.194216" elapsed="0.010338"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:23.204780" elapsed="0.035853"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:23.241642" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:23.241511" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:23.241486" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:23.242248" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:23.241872" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:23.241082" elapsed="0.001553">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:23.242701" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:23.193022" elapsed="0.049780">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:23.242980" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:23.191714" elapsed="0.051393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:23.190616" elapsed="0.052590">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:24.255158" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:24.252038" elapsed="0.005115">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:24.257489" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:24.257285" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:24.257257" elapsed="0.000318"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:24.257615" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:24.251496" elapsed="0.006249">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:24.257972" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:24.258043" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:24.249916" elapsed="0.008250">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:24.258297" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:24.258344" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:24.248391" elapsed="0.009978"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:24.258535" elapsed="0.037497"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:24.297185" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:24.297022" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:24.296990" elapsed="0.000268"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:24.297865" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:24.297426" elapsed="0.000542">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:24.296572" elapsed="0.001560">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:24.298200" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:24.246995" elapsed="0.051309">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:24.298486" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:24.245510" elapsed="0.053090">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:24.244232" elapsed="0.054466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:25.311309" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:25.306765" elapsed="0.006467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:25.313563" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:25.313374" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:25.313329" elapsed="0.000316"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:25.313683" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:25.305773" elapsed="0.008029">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:25.313981" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:25.314049" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:25.304532" elapsed="0.009636">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:25.314347" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:25.314395" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:25.303337" elapsed="0.011083"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:25.314586" elapsed="0.033976"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:25.349653" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:25.349486" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:25.349460" elapsed="0.000266"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:25.350293" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:25.349891" elapsed="0.000512">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:25.349018" elapsed="0.001510">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:25.350604" elapsed="0.000029"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:25.301981" elapsed="0.048758">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:25.350923" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:25.300651" elapsed="0.050386">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:25.299604" elapsed="0.051558">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:26.363464" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:26.358978" elapsed="0.006389">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:26.365669" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:26.365485" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:26.365460" elapsed="0.000290"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:26.365787" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:26.357973" elapsed="0.007930">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:26.366084" elapsed="0.000038"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:26.366232" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:26.356725" elapsed="0.009612">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:26.366455" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:26.366500" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:26.355546" elapsed="0.010979"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:26.366690" elapsed="0.036716"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:26.404417" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:26.404282" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:26.404258" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:26.405080" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:26.404649" elapsed="0.000523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:26.403852" elapsed="0.001434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:26.405347" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:26.354406" elapsed="0.051037">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:26.405619" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:26.353066" elapsed="0.052662">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:26.352004" elapsed="0.053819">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:27.415581" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:27.411206" elapsed="0.006552">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:27.418226" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:27.417911" elapsed="0.000381"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:27.417875" elapsed="0.000512"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:27.418436" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:27.410427" elapsed="0.008144">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:27.418774" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:27.418843" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:27.409503" elapsed="0.009441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:27.419078" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:27.419144" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:27.408593" elapsed="0.010576"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:27.419338" elapsed="0.048784"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:27.469358" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:27.469191" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:27.469157" elapsed="0.000298"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:27.470165" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:27.469675" elapsed="0.000571">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:27.468624" elapsed="0.001739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:27.470425" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:27.407894" elapsed="0.062629">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:27.470700" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:27.407219" elapsed="0.063594">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:27.406575" elapsed="0.064342">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:28.483610" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:28.479785" elapsed="0.006272">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:28.486627" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:28.486341" elapsed="0.000370"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:28.486300" elapsed="0.000453"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:28.486811" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:28.479157" elapsed="0.007834">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:28.487279" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:28.487381" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:28.478380" elapsed="0.009150">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:28.487710" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:28.487779" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:28.477326" elapsed="0.010491"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:28.488086" elapsed="0.042000"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:28.531179" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:28.531022" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:28.530995" elapsed="0.000254"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:28.531808" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:28.531417" elapsed="0.000516">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:28.530584" elapsed="0.001472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:28.532134" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:28.475574" elapsed="0.056660">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:28.532409" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:28.473634" elapsed="0.058885">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:28.472194" elapsed="0.060419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:29.543168" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:29.539026" elapsed="0.007318">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:29.546935" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:29.546574" elapsed="0.000447"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:29.546519" elapsed="0.000541"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:29.547135" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:29.538391" elapsed="0.008929">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:29.547637" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:29.547735" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:29.537566" elapsed="0.010312">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:29.548075" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:29.548171" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:29.536710" elapsed="0.011496"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:29.548450" elapsed="0.036684"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:29.586171" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:29.586014" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:29.585989" elapsed="0.000252"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:29.586768" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:29.586403" elapsed="0.000445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:29.585585" elapsed="0.001376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:29.587022" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:29.535935" elapsed="0.051204">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:29.587314" elapsed="0.000058"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:29.534551" elapsed="0.052912">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:29.533547" elapsed="0.054097">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:30.600186" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:30.595595" elapsed="0.006456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:30.602376" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:30.602189" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:30.602164" elapsed="0.000294"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:30.602496" elapsed="0.000039"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:30.594515" elapsed="0.008122">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:30.602817" elapsed="0.000038"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:30.602903" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:30.593279" elapsed="0.009724">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:30.603138" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:30.603185" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:30.591932" elapsed="0.011278"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:30.603376" elapsed="0.032319"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:30.636862" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:30.636728" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:30.636703" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:30.637468" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:30.637105" elapsed="0.000436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:30.636304" elapsed="0.001349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:30.637716" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:30.590765" elapsed="0.047050">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:30.638063" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:30.589517" elapsed="0.048677">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:30.588542" elapsed="0.049751">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:31.651320" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:31.645833" elapsed="0.007488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:31.653702" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:31.653456" elapsed="0.000310"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:31.653423" elapsed="0.000368"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:31.653828" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:31.644837" elapsed="0.009112">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:31.654148" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:31.654263" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:31.643635" elapsed="0.010751">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:31.654521" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:31.654568" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:31.642473" elapsed="0.012120"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:31.654772" elapsed="0.034900"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:31.690708" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:31.690573" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:31.690549" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:31.691332" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:31.690942" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:31.690142" elapsed="0.001379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:31.691711" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:31.641336" elapsed="0.050480">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:31.691994" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:31.640072" elapsed="0.052049">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:31.639159" elapsed="0.053062">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:32.702032" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:32.697303" elapsed="0.007632">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:32.705404" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:32.705129" elapsed="0.000358"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:32.705073" elapsed="0.000452"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:32.705577" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:32.696331" elapsed="0.009412">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:32.706051" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:32.706173" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:32.695128" elapsed="0.011194">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:32.706493" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:32.706560" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:32.694448" elapsed="0.012148"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:32.706840" elapsed="0.032992"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:32.740864" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:32.740720" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:32.740697" elapsed="0.000236"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:32.741486" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:32.741119" elapsed="0.000455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:32.740306" elapsed="0.001489">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:32.741883" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:32.693918" elapsed="0.048065">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:32.742183" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:32.693320" elapsed="0.048986">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:32.692788" elapsed="0.049617">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:33.751787" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:33.747831" elapsed="0.005901">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:33.754046" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:33.753857" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:33.753831" elapsed="0.000317"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:33.754187" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:33.747193" elapsed="0.007144">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:33.754527" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:33.754595" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:33.746382" elapsed="0.008313">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:33.754815" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:33.754860" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:33.745575" elapsed="0.009310"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:33.755055" elapsed="0.039434"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:33.795957" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:33.795767" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:33.795730" elapsed="0.000331"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:33.797005" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:33.796323" elapsed="0.000824">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:33.795149" elapsed="0.002254">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:33.797513" elapsed="0.000027"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:33.744789" elapsed="0.052875">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:33.797927" elapsed="0.000026"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:33.743921" elapsed="0.054125">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:33.743259" elapsed="0.054900">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:34.804900" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:34.801970" elapsed="0.004802">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:34.807078" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:34.806893" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:34.806867" elapsed="0.000310"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:34.807214" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:34.801530" elapsed="0.005805">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:34.807513" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:34.807580" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:34.800896" elapsed="0.006783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:34.807798" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:34.807843" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:34.800336" elapsed="0.007531"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:34.808111" elapsed="0.034313"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:34.843443" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:34.843308" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:34.843284" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:34.844120" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:34.843674" elapsed="0.000525">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:34.842870" elapsed="0.001446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:34.844377" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:34.799804" elapsed="0.044671">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:34.844651" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:34.799229" elapsed="0.045531">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:34.798691" elapsed="0.046188">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:35.979676" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:35.852618" elapsed="0.133251">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:35.986881" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:35.986269" elapsed="0.000805"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:35.986192" elapsed="0.001012"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:35.987331" elapsed="0.000057"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:35.851560" elapsed="0.136155">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:35.988444" elapsed="0.000080"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:35.988726" elapsed="0.000056"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:35.850302" elapsed="0.138764">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:35.989404" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:35.989455" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:35.849072" elapsed="0.140408"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:35.989727" elapsed="0.035276"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:36.026003" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:36.025868" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:36.025844" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:36.026763" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:36.026400" elapsed="0.000436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:36.025455" elapsed="0.001500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:36.027034" elapsed="0.000024"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:35.847852" elapsed="0.179455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:36.027503" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:35.846617" elapsed="0.180999">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:35.845684" elapsed="0.182027">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:37.037835" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:37.033929" elapsed="0.006468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:37.040839" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:37.040563" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:37.040527" elapsed="0.000419"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:37.040993" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:37.033173" elapsed="0.007994">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:37.041491" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:37.041575" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:37.032203" elapsed="0.009500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:37.041861" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:37.041918" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:37.031206" elapsed="0.010743"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:37.042178" elapsed="0.049653"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:37.093309" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:37.093144" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:37.093111" elapsed="0.000286"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:37.094077" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:37.093613" elapsed="0.000578">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:37.092595" elapsed="0.001738">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:37.094408" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:37.030313" elapsed="0.064220">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:37.094761" elapsed="0.000026"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:37.029320" elapsed="0.065578">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:37.028527" elapsed="0.066495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:38.103006" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:38.099664" elapsed="0.005878">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:38.106001" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:38.105759" elapsed="0.000311"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:38.105727" elapsed="0.000395"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:38.106170" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:38.099075" elapsed="0.007242">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:38.106549" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:38.106634" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:38.098396" elapsed="0.008368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:38.106905" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:38.106961" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:38.097684" elapsed="0.009307"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:38.107224" elapsed="0.042953"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:38.151464" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:38.151242" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:38.151212" elapsed="0.000339"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:38.152238" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:38.151760" elapsed="0.000569">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:38.150719" elapsed="0.001753">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:38.152546" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:38.097029" elapsed="0.055639">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:38.152897" elapsed="0.000028"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:38.096320" elapsed="0.056719">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:38.095680" elapsed="0.057497">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:39.165074" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.160888" elapsed="0.006373">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.167613" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.167396" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.167366" elapsed="0.000335"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.167739" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.160118" elapsed="0.007763">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.168074" elapsed="0.000039"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.168161" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.159142" elapsed="0.009120">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:39.168387" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.168441" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.158072" elapsed="0.010395"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.168635" elapsed="0.044193"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:39.213922" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.213782" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.213756" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.214571" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.214183" elapsed="0.000467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:39.213326" elapsed="0.001507">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.214899" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.156712" elapsed="0.058287">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.215202" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.155182" elapsed="0.060132">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.154067" elapsed="0.061342">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:39.215567" level="FAIL">Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>120s</arg>
<arg>1s</arg>
<arg>PrefixCounting.Check_Ipv4_Topology_Is_Empty</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:21:38.621554" elapsed="120.594117">Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.217052" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:39.216725" elapsed="0.000408"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:39.216341" elapsed="0.000863"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.218051" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.217660" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.217641" elapsed="0.000520"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.218314" elapsed="0.000342"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.225832" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.225135" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:39.226233" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.226004" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.225970" elapsed="0.000360"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.226894" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.226500" elapsed="0.000432"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:39.227513" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_For_Empty_Ipv4_Topology_Before_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.227181" elapsed="0.000362"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:23:39.227947" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:23:39.227741" elapsed="0.000236"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.228597" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.228189" elapsed="0.000440"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.229230" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.228829" elapsed="0.000434"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.229978" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"

Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:23:39.229457" elapsed="0.000584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.230798" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.230256" elapsed="0.000604"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:39.224617" elapsed="0.006400"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.217441" elapsed="0.013638"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.216007" elapsed="0.015143"/>
</kw>
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:21:38.552563" elapsed="120.678646">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"

Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s9-t2" name="Reconfigure_ODL_To_Accept_Connection" line="85">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.236497" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.236185" elapsed="0.000387">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:39.235938" elapsed="0.000706">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:39.235916" elapsed="0.000762">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.235742" elapsed="0.001026">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.236941" elapsed="0.000023"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.232748" elapsed="0.004303">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.238382" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:39.238050" elapsed="0.000376"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:39.237678" elapsed="0.000798"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.239378" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.238973" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.238954" elapsed="0.000511"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.239614" elapsed="0.000309"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.245140" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.244678" elapsed="0.000493"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:39.245399" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-17T03:23:39.245250" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.245230" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.245643" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.245819" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.245990" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.246176" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.246344" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.246586" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.246802" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:39.244350" elapsed="0.002534"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.238714" elapsed="0.008220"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.237367" elapsed="0.009609"/>
</kw>
<doc>Configure BGP peer module with initiate-connection set to false.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.231978" elapsed="0.015042">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s9-t3" name="Start_Talking_BGP_Speaker" line="100">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.251020" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.250676" elapsed="0.000438">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:39.250446" elapsed="0.000741">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:39.250422" elapsed="0.000799">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.250243" elapsed="0.001070">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.251509" elapsed="0.000023"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.247947" elapsed="0.003674">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.252945" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:39.252621" elapsed="0.000368"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:39.252234" elapsed="0.000806"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.253918" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.253526" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.253506" elapsed="0.000498"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.254171" elapsed="0.000327"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.259782" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.259346" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:39.260028" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-17T03:23:39.259882" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.259864" elapsed="0.000266"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.260282" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.260468" elapsed="0.000022"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.260645" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.260811" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.260978" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.261157" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.261323" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:39.259015" elapsed="0.002454"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.253300" elapsed="0.008222"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.251913" elapsed="0.009649"/>
</kw>
<doc>Start Python speaker to connect to ODL.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.247482" elapsed="0.014118">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s9-t4" name="Wait_For_Stable_Talking_Ipv4_Topology" line="106">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.265709" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.265381" elapsed="0.000404">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:39.265151" elapsed="0.000710">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:39.265126" elapsed="0.000768">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.264915" elapsed="0.001069">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.266175" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.262556" elapsed="0.003729">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.267602" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:39.267280" elapsed="0.000366"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:39.266902" elapsed="0.000794"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.268643" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.268241" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.268222" elapsed="0.000511"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.268884" elapsed="0.000328"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.274640" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.274215" elapsed="0.000452"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:39.274925" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:23:39.274763" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.274744" elapsed="0.000264"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.275214" elapsed="0.000026"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.275420" elapsed="0.000028"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.275605" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.275786" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.275981" elapsed="0.000024"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.276202" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.276374" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:39.273880" elapsed="0.002578"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.267946" elapsed="0.008606"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.266575" elapsed="0.010019"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable. This is done by checking stability of prefix count.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.261908" elapsed="0.014724">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s9-t5" name="Check_Talking_Ipv4_Topology_Count" line="114">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:39.280172" elapsed="0.000271"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:39.279862" elapsed="0.000638"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.281687" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.281556" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.281534" elapsed="0.000244"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.287730" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.287605" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.287583" elapsed="0.000224"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.288994" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:39.288525" elapsed="0.000498"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.289584" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:39.289223" elapsed="0.000396"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:39.289678" elapsed="0.000041"/>
</return>
<msg time="2026-04-17T03:23:39.289881" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:39.288055" elapsed="0.001853"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.296632" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.296498" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.296476" elapsed="0.000249"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.298198" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.298059" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.298040" elapsed="0.000228"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:39.298745" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.298417" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.299269" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.298956" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.300309" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.299952" elapsed="0.001236">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:39.301426" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:39.301482" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.299511" elapsed="0.001995"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.302492" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.302177" elapsed="0.001103">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:39.303478" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:39.303537" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.301726" elapsed="0.001838"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.304575" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.303905" elapsed="0.000754">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:39.303647" elapsed="0.001101">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:39.303623" elapsed="0.001231">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.305088" elapsed="0.000048"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.305355" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.305207" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.305190" elapsed="0.000244"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.305480" elapsed="0.000018"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.308547" elapsed="0.000167"/>
</kw>
<msg time="2026-04-17T03:23:39.308797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.307295" elapsed="0.001649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.309319" elapsed="0.000085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.309685" elapsed="0.000081"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.306449" elapsed="0.003434"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:39.305785" elapsed="0.004167"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.297695" elapsed="0.012368">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</status>
</kw>
<msg time="2026-04-17T03:23:39.310200" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.310245" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Talking_Ipv4_Topology_Count"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.296916" elapsed="0.013353"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.310483" elapsed="0.000179"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.310345" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.310326" elapsed="0.000409"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.311691" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.311583" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.311564" elapsed="0.000208"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.312241" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:39.312375" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.311948" elapsed="0.000457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.312914" level="INFO">{1: 16}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.312595" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.313440" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.313186" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.314071" elapsed="0.000285"/>
</kw>
<msg time="2026-04-17T03:23:39.314460" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:39.314507" level="INFO">${old_connection_index} = 16</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.313648" elapsed="0.000882"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.315500" elapsed="0.000205"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.316973" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.316517" elapsed="0.001451">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.315921" elapsed="0.002148"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.318843" elapsed="0.000374"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.318263" elapsed="0.001057"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:39.314901" elapsed="0.004528"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.314607" elapsed="0.004888"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.314587" elapsed="0.004938"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:39.320528" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.320123" elapsed="0.000439"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:39.320624" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:23:39.320826" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.319750" elapsed="0.001109"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.321077" elapsed="0.000525"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.321932" level="INFO">index=17
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:39.322036" level="INFO">${karaf_connection_object} = index=17
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.321799" elapsed="0.000264"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.322248" elapsed="0.002866"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.325574" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:39.326853" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.325289" elapsed="0.001970">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.342472" elapsed="0.000505"/>
</kw>
<msg time="2026-04-17T03:23:39.343117" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.340704" elapsed="0.002618"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.343549" elapsed="0.000030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.343784" elapsed="0.000029"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.328287" elapsed="0.015610"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:39.327645" elapsed="0.016302"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.311281" elapsed="0.032755">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.344736" elapsed="0.000034"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.344825" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.296075" elapsed="0.048872">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:39.345114" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.345164" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.290329" elapsed="0.054858"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.345595" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.345285" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.345257" elapsed="0.000418"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:39.290178" elapsed="0.055520"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:39.289971" elapsed="0.055763"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:39.287128" elapsed="0.058668"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:39.281185" elapsed="0.064728"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.280655" elapsed="0.065306"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:39.277536" elapsed="0.068491"/>
</kw>
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:39.352451" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.349315" elapsed="0.004945">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.354550" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.354367" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.354345" elapsed="0.000286"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.354664" elapsed="0.000041"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.348772" elapsed="0.006028">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.354977" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.355043" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.347966" elapsed="0.007195">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:39.355272" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.355316" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.347317" elapsed="0.008023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.355511" elapsed="0.042225"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:39.399140" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.398976" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.398947" elapsed="0.000272"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.399899" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.399407" elapsed="0.000594">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:39.398388" elapsed="0.001783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.400255" elapsed="0.000024"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.346790" elapsed="0.053607">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.400729" elapsed="0.000033"/>
</kw>
<arg>${COUNT_PREFIX_COUNT_SINGLE}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.346289" elapsed="0.054597">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.402601" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:39.402205" elapsed="0.000464"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:39.401739" elapsed="0.000993"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.403641" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.403212" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.403192" elapsed="0.000538"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.403881" elapsed="0.000387"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.409771" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.409307" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:39.410022" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.409875" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.409857" elapsed="0.000227"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.410582" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.410255" elapsed="0.000358"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:39.411088" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_Talking_Ipv4_Topology_Count</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.410804" elapsed="0.000329"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:23:39.411484" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:23:39.411296" elapsed="0.000214"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.412030" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.411682" elapsed="0.000376"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.412558" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.412233" elapsed="0.000355"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.413253" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:23:39.412764" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.413797" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.413478" elapsed="0.000368"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:39.408975" elapsed="0.004928"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.402961" elapsed="0.011053"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.401334" elapsed="0.012723"/>
</kw>
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:23:39.276930" elapsed="0.137187">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_talking_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s9-t6" name="Kill_Talking_BGP_Speaker" line="120">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:39.417693" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:39.417401" elapsed="0.000554"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.419030" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.418919" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.418900" elapsed="0.000221"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.424167" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.423993" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.423972" elapsed="0.000290"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.425369" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:39.424957" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.425870" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:39.425572" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:39.425940" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:23:39.426138" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:39.424558" elapsed="0.001609"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.432181" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.432049" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.432023" elapsed="0.000226"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.433573" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.433425" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.433399" elapsed="0.000265"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:39.434289" level="INFO">${karaf_connection_index} = 17</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.433872" elapsed="0.000453"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.434846" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.434550" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.435868" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.435541" elapsed="0.001225">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:39.437016" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:39.437083" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.435087" elapsed="0.002051"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.438210" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.437845" elapsed="0.001324">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:39.439422" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:39.439489" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.437371" elapsed="0.002154"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.440804" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.439955" elapsed="0.001003">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:39.439636" elapsed="0.001424">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:39.439607" elapsed="0.001523">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.441401" elapsed="0.000033"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.441744" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.441529" elapsed="0.000296"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.441502" elapsed="0.000360"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.441915" elapsed="0.000025"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.445698" elapsed="0.000217"/>
</kw>
<msg time="2026-04-17T03:23:39.446012" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.444134" elapsed="0.002104"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.446690" elapsed="0.000114"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.447233" elapsed="0.000110"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.443195" elapsed="0.004309"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:39.442356" elapsed="0.005246"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.433019" elapsed="0.014703">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:23:39.447873" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.447941" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Talking_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.432405" elapsed="0.015575"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.448322" elapsed="0.000250"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.448165" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.448067" elapsed="0.000566"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.449510" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.449393" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.449374" elapsed="0.000204"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.449865" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:39.449971" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.449734" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.450491" level="INFO">{1: 17}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.450205" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.450991" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.450740" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.451623" elapsed="0.000276"/>
</kw>
<msg time="2026-04-17T03:23:39.452000" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:39.452046" level="INFO">${old_connection_index} = 17</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.451221" elapsed="0.000848"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.453021" elapsed="0.000215"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.454351" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.453910" elapsed="0.001409">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.453410" elapsed="0.002011"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.456214" elapsed="0.000306"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.455662" elapsed="0.000944"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:39.452496" elapsed="0.004156"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.452251" elapsed="0.004449"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.452229" elapsed="0.004496"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:39.457625" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.457306" elapsed="0.000346"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:39.457701" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:23:39.457858" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.456947" elapsed="0.000935"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.458041" elapsed="0.000455"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.458804" level="INFO">index=18
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:39.458905" level="INFO">${karaf_connection_object} = index=18
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.458691" elapsed="0.000241"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.459084" elapsed="0.002517"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.462039" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:39.463388" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.461774" elapsed="0.001997">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.477804" elapsed="0.000683"/>
</kw>
<msg time="2026-04-17T03:23:39.478576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.476432" elapsed="0.002317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.478916" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.479078" elapsed="0.000036"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.464753" elapsed="0.014425"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:39.464058" elapsed="0.015165"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.449066" elapsed="0.030239">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.479662" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.479736" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.431688" elapsed="0.048156">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:39.479953" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.479997" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.426569" elapsed="0.053451"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.480373" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.480111" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.480078" elapsed="0.000411"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:39.426409" elapsed="0.054108"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:39.426226" elapsed="0.054326"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:39.423616" elapsed="0.056995"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:39.418602" elapsed="0.062065"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.418134" elapsed="0.062578"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:39.415191" elapsed="0.065574"/>
</kw>
<kw name="Kill_BGP_Speaker" owner="BGPSpeaker">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.481962" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.481649" elapsed="0.000340"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-17T03:23:39.482185" elapsed="0.000386"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-17T03:23:39.481381" elapsed="0.001279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.487198" level="INFO">^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:23:39.483287" elapsed="0.004052"/>
</kw>
<msg time="2026-04-17T03:23:39.487549" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:39.487644" level="INFO">${message} =  ^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.482873" elapsed="0.004828"/>
</kw>
<kw name="Dump_BGP_Speaker_Logs" owner="BGPSpeaker">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.489121" level="INFO">Executing command 'cat play.py.out'.</msg>
<msg time="2026-04-17T03:23:39.502809" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:39.503069" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${BGPSpeaker__OUTPUT_LOG}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:39.488780" elapsed="0.014388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.504295" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.503599" elapsed="0.000795"/>
</kw>
<doc>Send all output produced by the play.py utility to Robot logs.
This needs to be called if your suite detects play.py crashing and bypasses
Kill_BGP_Speaker in that case otherwise the output of play.py (which most
likely contains clues about why it crashed) will be lost.</doc>
<status status="PASS" start="2026-04-17T03:23:39.488158" elapsed="0.016374"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<status status="PASS" start="2026-04-17T03:23:39.504988" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-17T03:23:39.504699" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.504649" elapsed="0.000576"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.505589" elapsed="0.000052"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The prompt was not seen within timeout period.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.506051" elapsed="0.000086"/>
</kw>
<doc>Interrupt play.py, fail if no prompt is seen within SSHLibrary timeout.
Also dump the logs with the output the program produced.
This keyword is also suitable for stopping BGP manager.</doc>
<status status="PASS" start="2026-04-17T03:23:39.481043" elapsed="0.025241"/>
</kw>
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.508323" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:39.507515" elapsed="0.000909"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:23:39.506786" elapsed="0.001773"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.511634" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.511236" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.511216" elapsed="0.000504"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.511910" elapsed="0.000354"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.517308" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.516870" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:39.517552" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-17T03:23:39.517409" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.517391" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.517780" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.518018" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.518210" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.518381" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.518549" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.518735" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.518900" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:39.516558" elapsed="0.002418"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.510082" elapsed="0.008945"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.509199" elapsed="0.009871"/>
</kw>
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:23:39.414513" elapsed="0.104610"/>
</test>
<test id="s1-s9-t7" name="Store_Results_For_Talking_BGP_Speaker" line="129">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:39.522450" elapsed="0.000256"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:39.522155" elapsed="0.000606"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.523801" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.523685" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.523664" elapsed="0.000206"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.528787" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.528675" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.528656" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.529935" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:39.529513" elapsed="0.000451"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.530464" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:39.530150" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:39.530535" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:23:39.530720" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:39.529117" elapsed="0.001629"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.536484" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.536372" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.536352" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.537743" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.537637" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.537619" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:39.538286" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.537957" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.538708" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.538473" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.539612" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.539330" elapsed="0.000960">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:39.540526" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:39.540573" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.538895" elapsed="0.001702"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.541370" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.541124" elapsed="0.000878">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:39.542203" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:39.542248" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.540767" elapsed="0.001504"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.543241" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.542568" elapsed="0.000735">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:39.542347" elapsed="0.001026">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:39.542328" elapsed="0.001076">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.543568" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.543794" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.543652" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.543636" elapsed="0.000232"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.543900" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.546683" elapsed="0.000180"/>
</kw>
<msg time="2026-04-17T03:23:39.546944" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.545482" elapsed="0.001659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.547489" elapsed="0.000093"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.547910" elapsed="0.000092"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.544860" elapsed="0.003307"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:39.544187" elapsed="0.004061"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.537337" elapsed="0.011021">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:23:39.548484" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.548539" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Talking_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.536709" elapsed="0.011860"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.548796" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.548664" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.548641" elapsed="0.000236"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.550162" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.550006" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.549983" elapsed="0.000265"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.550626" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:39.550756" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.550453" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.551400" level="INFO">{1: 18}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.550988" elapsed="0.000468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.551953" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.551655" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.552741" elapsed="0.000311"/>
</kw>
<msg time="2026-04-17T03:23:39.553188" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:39.553239" level="INFO">${old_connection_index} = 18</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.552279" elapsed="0.000985"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.554220" elapsed="0.000215"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.555902" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.555404" elapsed="0.001588">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.554714" elapsed="0.002393"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.557774" elapsed="0.000285"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.557294" elapsed="0.000867"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:39.553607" elapsed="0.004601"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.553348" elapsed="0.004908"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.553327" elapsed="0.004955"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:39.559222" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.558887" elapsed="0.000362"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:39.559297" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:23:39.559452" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.558499" elapsed="0.000977"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.559632" elapsed="0.000428"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.560365" level="INFO">index=19
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:39.560467" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.560252" elapsed="0.000240"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.560646" elapsed="0.002497"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.563587" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:39.564676" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.563314" elapsed="0.001744">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.579157" elapsed="0.000410"/>
</kw>
<msg time="2026-04-17T03:23:39.579666" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.577666" elapsed="0.002157"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.579993" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.580181" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.565953" elapsed="0.014316"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:39.565403" elapsed="0.014913"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.549643" elapsed="0.030763">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.580852" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.580930" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.536010" elapsed="0.045035">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:39.581182" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.581227" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.531158" elapsed="0.050094"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.581655" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.581341" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.581315" elapsed="0.000429"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:39.530988" elapsed="0.050784"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:39.530803" elapsed="0.051027"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:39.528296" elapsed="0.053610"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:39.523379" elapsed="0.058588"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.522916" elapsed="0.059098"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:39.519966" elapsed="0.062105"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.593202" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:23:39.593334" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:23:39.583596" elapsed="0.009774"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.593797" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:23:39.606352" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:39.606587" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:39.593603" elapsed="0.013049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.607651" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.607017" elapsed="0.000728"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:39.608810" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:23:39.608174" elapsed="0.000753"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:23:39.582663" elapsed="0.026394"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.656342" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:23:39.656559" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:23:39.610332" elapsed="0.046286"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.657348" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:23:39.670448" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:39.670772" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:39.656997" elapsed="0.013850"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.672042" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.671342" elapsed="0.000838"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:39.673349" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:23:39.672626" elapsed="0.000853"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:23:39.609413" elapsed="0.064214"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.715771" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:23:39.715925" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:23:39.675122" elapsed="0.040917"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.716537" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:23:39.728663" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:39.728920" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:39.716325" elapsed="0.012667"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.730074" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.729453" elapsed="0.000757"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:39.731291" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-talking-totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-talking-totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:23:39.730659" elapsed="0.000752"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>prefixcount-talking-totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:23:39.674031" elapsed="0.057517"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.773585" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:23:39.773784" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:23:39.733014" elapsed="0.040807"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.774376" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:23:39.787445" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:39.787631" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:39.774144" elapsed="0.013522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.788680" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.787970" elapsed="0.000818"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:39.790025" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-talking-performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-talking-performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:23:39.789316" elapsed="0.000886"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>prefixcount-talking-performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:23:39.731893" elapsed="0.058452"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:39.792002" elapsed="0.000728"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.795342" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.794202" elapsed="0.001325"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.794130" elapsed="0.001458"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.795965" elapsed="0.000585"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.802830" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.802344" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:39.803129" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-17T03:23:39.802939" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.802915" elapsed="0.000310"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.803379" elapsed="0.000023"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.803574" elapsed="0.000023"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.803777" elapsed="0.000023"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.803953" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.804172" elapsed="0.000029"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.804380" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.804632" elapsed="0.000024"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:39.801988" elapsed="0.002730"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.793479" elapsed="0.011290"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.791147" elapsed="0.013665"/>
</kw>
<doc>Store results for plotting</doc>
<status status="PASS" start="2026-04-17T03:23:39.519462" elapsed="0.285390"/>
</test>
<test id="s1-s9-t8" name="Wait_For_Stable_Ipv4_Topology_After_Talking" line="137">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.808753" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.808501" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.808479" elapsed="0.000361"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:23:39.808276" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.809970" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.809839" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.809820" elapsed="0.000219"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.816863" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.816717" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.816693" elapsed="0.000264"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.818350" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:39.817812" elapsed="0.000577"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.819043" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:39.818637" elapsed="0.000442"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:39.819158" elapsed="0.000045"/>
</return>
<msg time="2026-04-17T03:23:39.819371" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:39.817300" elapsed="0.002103"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.826830" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.826695" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.826673" elapsed="0.000245"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.828519" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.828375" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.828351" elapsed="0.000260"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:39.829251" level="INFO">${karaf_connection_index} = 19</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.828816" elapsed="0.000474"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.829831" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.829526" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.830794" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.830508" elapsed="0.001013">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:39.831728" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:39.831774" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.830113" elapsed="0.001688"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.832638" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.832362" elapsed="0.000999">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:39.833583" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:39.833633" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.831992" elapsed="0.001664"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.834954" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.834032" elapsed="0.000988">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:39.833798" elapsed="0.001327">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:39.833777" elapsed="0.001391">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.835339" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.835603" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.835445" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.835421" elapsed="0.000260"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.835714" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.838597" elapsed="0.000153"/>
</kw>
<msg time="2026-04-17T03:23:39.838819" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.837269" elapsed="0.001713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.839348" elapsed="0.000097"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.839767" elapsed="0.000077"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.836585" elapsed="0.003392"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:39.835995" elapsed="0.004048"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.827948" elapsed="0.012202">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</kw>
<msg time="2026-04-17T03:23:39.840257" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.840300" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.827161" elapsed="0.013163"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.840521" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.840402" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.840381" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.841455" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.841341" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.841322" elapsed="0.000200"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.841798" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:39.841902" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.841676" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.842372" level="INFO">{1: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.842085" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.842858" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.842606" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.843496" elapsed="0.000262"/>
</kw>
<msg time="2026-04-17T03:23:39.843856" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:39.843901" level="INFO">${old_connection_index} = 19</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.843067" elapsed="0.000856"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.844835" elapsed="0.000203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.846357" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.845913" elapsed="0.001417">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.845388" elapsed="0.002047"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.848160" elapsed="0.000292"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.847617" elapsed="0.000919"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:39.844263" elapsed="0.004320"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.843998" elapsed="0.004636"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.843979" elapsed="0.004679"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:39.849539" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.849218" elapsed="0.000348"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:39.849614" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:23:39.849768" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.848869" elapsed="0.000923"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.849948" elapsed="0.000470"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.852412" level="INFO">index=20
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:39.852524" level="INFO">${karaf_connection_object} = index=20
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:39.850646" elapsed="0.001905"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.852710" elapsed="0.002433"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:39.855590" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:39.856827" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.855317" elapsed="0.002028">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:39.872371" elapsed="0.000414"/>
</kw>
<msg time="2026-04-17T03:23:39.872890" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.870299" elapsed="0.002755"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.873242" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.873409" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:39.858210" elapsed="0.015285"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:39.857650" elapsed="0.015895"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.841004" elapsed="0.032635">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.874051" elapsed="0.000029"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.874150" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.826280" elapsed="0.047989">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:39.874384" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.874479" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.819932" elapsed="0.054578"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.874944" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.874674" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.874651" elapsed="0.000374"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:39.819727" elapsed="0.055324"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:39.819484" elapsed="0.055602"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:39.816242" elapsed="0.058925"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:39.809522" elapsed="0.065707"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.809045" elapsed="0.066231"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:39.805852" elapsed="0.069478"/>
</kw>
<kw name="Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable" owner="PrefixCounting">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${shards_list}&quot;&quot;&quot;==&quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:39.894084" elapsed="0.000052"/>
</return>
<msg time="2026-04-17T03:23:39.894335" level="INFO">${getter} = ['Get_Ipv4_Topology_Count', [], {'session': 'operational', 'topology': 'example-ipv4-topology'}]</msg>
<var>${getter}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.893731" elapsed="0.000631"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.891617" elapsed="0.002788"/>
</branch>
<branch type="ELSE">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<var>${getter}</var>
<arg>Get_Ipv4_Topology_Count_With_Shards_Check</arg>
<arg>${shards_list}</arg>
<arg>${shards_details}</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.894649" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.894448" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.891593" elapsed="0.003149"/>
</if>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:39.895251" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:23:39.895459" level="INFO">${validator} = ['WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'excluded_value': '600000'}]</msg>
<var>${validator}</var>
<arg>WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword</arg>
<arg>state_holder</arg>
<arg>data_holder</arg>
<arg>excluded_value=${excluded_count}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.894934" elapsed="0.000551"/>
</kw>
<kw name="Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.896933" level="INFO">${tmp} = 1</msg>
<var>${tmp}</var>
<arg>int(${count})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.896534" elapsed="0.000426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.897418" level="INFO">count=1</msg>
<arg>count=${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.897139" elapsed="0.000324"/>
</kw>
<kw name="WaitUtils__Check_Sanity_And_Compute_Derived_Times" owner="WaitUtils">
<if>
<branch type="IF" condition="int(${count}) &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>\${count} is ${count} and not at least 1.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.898460" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.898190" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.898168" elapsed="0.000381"/>
</if>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:23:39.898961" level="INFO">${period_in_seconds} = 60.0</msg>
<var>${period_in_seconds}</var>
<arg>${period}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:23:39.898696" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${period_in_seconds} &lt;= 0.0">
<kw name="Fail" owner="BuiltIn">
<arg>\${period} ${period} has to be positive.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.899297" elapsed="0.000260"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.899059" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.899041" elapsed="0.000577"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:23:39.899935" level="INFO">${date_now} = 2026-04-17 03:23:39.900</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:23:39.899765" elapsed="0.000196"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:23:39.900374" level="INFO">${timeout_in_seconds} = 560.0</msg>
<var>${timeout_in_seconds}</var>
<arg>${timeout}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:23:39.900131" elapsed="0.000269"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-17T03:23:39.900876" level="INFO">${date_deadline} = 2026-04-17 03:32:59.900</msg>
<var>${date_deadline}</var>
<arg>${date_now}</arg>
<arg>${timeout_in_seconds}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-17T03:23:39.900560" elapsed="0.000342"/>
</kw>
<return>
<value>${timeout_in_seconds}</value>
<value>${period_in_seconds}</value>
<value>${date_deadline}</value>
<status status="PASS" start="2026-04-17T03:23:39.900949" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:23:39.901205" level="INFO">${timeout_in_seconds} = 560.0</msg>
<msg time="2026-04-17T03:23:39.901252" level="INFO">${period_in_seconds} = 60.0</msg>
<msg time="2026-04-17T03:23:39.901293" level="INFO">${date_deadline} = 2026-04-17 03:32:59.900</msg>
<var>${timeout_in_seconds}</var>
<var>${period_in_seconds}</var>
<var>${date_deadline}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${count}</arg>
<doc>Common checks for argument values. Return times in seconds and deadline date implied by timeout time.</doc>
<status status="PASS" start="2026-04-17T03:23:39.897758" elapsed="0.003558"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.901982" level="INFO">${maximum_sleeps} = 10</msg>
<var>${maximum_sleeps}</var>
<arg>math.ceil(${timeout_in_seconds} / ${period_in_seconds})</arg>
<arg>modules=math</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.901547" elapsed="0.000462"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.902472" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.902195" elapsed="0.000303"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.902942" level="INFO">${state} = 600000</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.902658" elapsed="0.000310"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline" owner="WaitUtils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.904786" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.904527" elapsed="0.000286"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.905268" level="INFO">${state} = 600000</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.904970" elapsed="0.000324"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.905774" level="INFO">${sleeps} = 0</msg>
<var>${sleeps}</var>
<arg>${count} - 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.905451" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="WaitUtils__Is_Deadline_Reachable" owner="WaitUtils">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:23:39.907282" level="INFO">${date_now} = 2026-04-17 03:23:39.907</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:23:39.907077" elapsed="0.000239"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-17T03:23:39.907864" level="INFO">${time_deadline} = 559.993</msg>
<var>${time_deadline}</var>
<arg>${date_deadline}</arg>
<arg>${date_now}</arg>
<arg>result_format=number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-17T03:23:39.907488" elapsed="0.000404"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.908456" level="INFO">${time_minimal} = 0.0</msg>
<var>${time_minimal}</var>
<arg>int(${sleeps_left}) * ${period_in_seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.908062" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="${time_minimal} &gt;= ${time_deadline}">
<kw name="Fail" owner="BuiltIn">
<arg>Not possible to succeed within the deadline. ${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.908809" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.908558" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.908537" elapsed="0.000350"/>
</if>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Compute time to be wasted in sleeps, compare to deadline. Fail with message when needed.</doc>
<status status="PASS" start="2026-04-17T03:23:39.906459" elapsed="0.002474"/>
</kw>
<msg time="2026-04-17T03:23:39.909030" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:39.909073" level="INFO">${message} = None</msg>
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.905970" elapsed="0.003142"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.909298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.909193" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.909175" elapsed="0.000193"/>
</if>
<for flavor="IN RANGE">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Closure_As_Is" owner="ScalarClosures">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.912241" level="INFO">${keyword} = Get_Ipv4_Topology_Count</msg>
<msg time="2026-04-17T03:23:39.912287" level="INFO">${args} = []</msg>
<msg time="2026-04-17T03:23:39.912332" level="INFO">${kwargs} = {'session': 'operational', 'topology': 'example-ipv4-topology'}</msg>
<var>${keyword}</var>
<var>${args}</var>
<var>${kwargs}</var>
<arg>${closure}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.911736" elapsed="0.000619"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:39.917953" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.915128" elapsed="0.004479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.920043" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.919803" elapsed="0.000327"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.919748" elapsed="0.000430"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.920270" elapsed="0.000039"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.914187" elapsed="0.006314">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.920769" elapsed="0.000047"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.920897" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.913004" elapsed="0.008067">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var>${result}</var>
<arg>${keyword}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.912525" elapsed="0.008670">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.921256" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Run the keyword from closure without affecting arguments.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.911370" elapsed="0.009988">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:39.921469" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.921514" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.910831" elapsed="0.010707"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.921703" elapsed="0.032436"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:39.955257" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.955117" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.955073" elapsed="0.000254"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.955880" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.955494" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:39.954657" elapsed="0.001419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.956157" elapsed="0.000018"/>
</return>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.910381" elapsed="0.045877">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:39.956373" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.956417" level="INFO">${data} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${data}</var>
<arg>ScalarClosures.Run_Keyword_And_Collect_Garbage</arg>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.909928" elapsed="0.046512"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Getter failed: ${data}</value>
<status status="PASS" start="2026-04-17T03:23:39.956623" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-17T03:23:39.956516" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.956498" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.956879" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.957110" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.957060" elapsed="0.000097"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.957041" elapsed="0.000138"/>
</if>
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments</arg>
<arg>${safe_validator}</arg>
<arg>${state}</arg>
<arg>${data}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.957404" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Validator failed: ${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.957542" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.957507" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.957491" elapsed="0.000118"/>
</if>
<if>
<branch type="IF" condition="${sleeps_left} &lt;= 0">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.957693" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.957658" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.957643" elapsed="0.000116"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.957910" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.958042" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.958008" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:39.957991" elapsed="0.000132"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.958263" elapsed="0.000020"/>
</kw>
<var name="${sleeps_left}">0</var>
<status status="PASS" start="2026-04-17T03:23:39.909780" elapsed="0.048535"/>
</iter>
<var>${sleeps_left}</var>
<value>${count}-1</value>
<value>-1</value>
<value>-1</value>
<status status="PASS" start="2026-04-17T03:23:39.909406" elapsed="0.048945"/>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.958546" elapsed="0.000021"/>
</kw>
<msg time="2026-04-17T03:23:39.958770" level="INFO">${state} = 600000</msg>
<msg time="2026-04-17T03:23:39.958813" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.958853" level="INFO">${result} = Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content...</msg>
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>count=${count}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${safe_validator}</arg>
<arg>initial_state=${state}</arg>
<doc>Pass only if consecutively 1 times in a row with 60 between attempts: ${getter} creates data and ${safe_validator} passes. Validator updates its state even if it reports failure. Always return validator state, status and message.</doc>
<status status="PASS" start="2026-04-17T03:23:39.903812" elapsed="0.055065"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.959068" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.958964" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.958946" elapsed="0.000203"/>
</if>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.960454" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:23:39.960528" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.960171" elapsed="0.000418">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:23:39.960690" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.960732" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.959802" elapsed="0.000954"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.960930" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.960827" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.960809" elapsed="0.000186"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:23:39.961411" level="INFO">@{message_chunks} = [ Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conte...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:23:39.961158" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.964610" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:23:39.964687" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.961936" elapsed="0.002853">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:23:39.964895" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.964938" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.961603" elapsed="0.003359"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="PASS" start="2026-04-17T03:23:39.965160" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-17T03:23:39.965036" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.965017" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.965395" elapsed="0.000022"/>
</kw>
<arg>${result}</arg>
<arg>Not possible to succeed within the deadline.</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="PASS" start="2026-04-17T03:23:39.959424" elapsed="0.006124"/>
</kw>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.966871" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:23:39.966945" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.966611" elapsed="0.000394">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:23:39.967120" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:39.967169" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.966222" elapsed="0.000973"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.967374" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.967268" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.967249" elapsed="0.000192"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:23:39.967837" level="INFO">@{message_chunks} = [  | : ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconf...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:23:39.967588" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.970841" level="INFO">Length is 0.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:23:39.968390" elapsed="0.002497"/>
</kw>
<msg time="2026-04-17T03:23:39.970978" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:39.971021" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.968030" elapsed="0.003013"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.971236" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.971131" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.971112" elapsed="0.000191"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.971754" level="FAIL">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.971449" elapsed="0.000367">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${result}</arg>
<arg>Getter failed</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.965826" elapsed="0.006096">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.972106" elapsed="0.000023"/>
</kw>
<var name="${try}">1</var>
<status status="FAIL" start="2026-04-17T03:23:39.903292" elapsed="0.068887">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${try}</var>
<value>1</value>
<value>${maximum_sleeps}+2</value>
<status status="FAIL" start="2026-04-17T03:23:39.903025" elapsed="0.069254">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.972450" elapsed="0.000021"/>
</kw>
<var>${result}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${repetitions}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${validator}</arg>
<arg>initial_state=${excluded_count}</arg>
<doc>Analogue of Wait Until Keyword Succeeds, but it passes state of validator around and exits early on getter failure. Calls GASSVHTSCBD to verify data is "stable".</doc>
<status status="FAIL" start="2026-04-17T03:23:39.895827" elapsed="0.076731">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.972627" elapsed="0.000018"/>
</return>
<arg>timeout=${bgp_filling_timeout}</arg>
<arg>period=${CHECK_PERIOD_PREFIX_COUNT_SINGLE}</arg>
<arg>repetitions=${REPETITIONS_PREFIX_COUNT_SINGLE}</arg>
<arg>excluded_count=${COUNT_PREFIX_COUNT_SINGLE}</arg>
<doc>Each ${period} get prefix count. When called with shard list, the check is done before the count is get. After 1 of stable different from ${excluded_count} within ${timeout}, Return validator output. Fail early on getter error.</doc>
<status status="FAIL" start="2026-04-17T03:23:39.887171" elapsed="0.085555">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.974070" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:39.973756" elapsed="0.000371"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:39.973390" elapsed="0.000788"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:39.975012" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:39.974633" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.974615" elapsed="0.000497"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:39.975265" elapsed="0.000307"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.980720" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.980307" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:39.980961" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.980820" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.980802" elapsed="0.000221"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.981490" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:39.981192" elapsed="0.000325"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:39.981935" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Wait_For_Stable_Ipv4_Topology_After_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:39.981677" elapsed="0.000284"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:23:39.982310" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:23:39.982137" elapsed="0.000199"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.982841" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.982504" elapsed="0.000364"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.983352" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:39.983023" elapsed="0.000357"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.983960" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:23:39.983534" elapsed="0.000517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.984517" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:39.984224" elapsed="0.000340"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:39.979973" elapsed="0.004646"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:39.974419" elapsed="0.010249"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:39.973055" elapsed="0.011654"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:23:39.805223" elapsed="0.179532">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s9-t9" name="Check_For_Empty_Ipv4_Topology_After_Talking" line="149">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:39.988455" elapsed="0.000215"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:39.988161" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.989744" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.989630" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.989610" elapsed="0.000202"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:39.994897" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:39.994790" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:39.994772" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.995984" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:39.995593" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:39.996490" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:39.996191" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:39.996559" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:23:39.996717" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:39.995214" elapsed="0.001527"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.002515" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.002358" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.002337" elapsed="0.000246"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.003769" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.003665" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.003647" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.004310" level="INFO">${karaf_connection_index} = 20</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.003983" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.004714" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.004498" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.005529" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.005259" elapsed="0.000981">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.006447" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:40.006494" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.004900" elapsed="0.001617"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.007356" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.007107" elapsed="0.000884">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.008193" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:40.008238" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.006747" elapsed="0.001514"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.009185" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.008560" elapsed="0.000687">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.008339" elapsed="0.000977">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.008318" elapsed="0.001031">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.009510" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.009739" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.009595" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.009578" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.009847" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.012446" elapsed="0.000149"/>
</kw>
<msg time="2026-04-17T03:23:40.012664" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.011352" elapsed="0.001443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.013073" elapsed="0.000112"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.013445" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.010715" elapsed="0.002911"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.010140" elapsed="0.003552"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.003363" elapsed="0.010415">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</kw>
<msg time="2026-04-17T03:23:40.013882" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.013926" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.002737" elapsed="0.011212"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.014159" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.014030" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.014009" elapsed="0.000216"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.015428" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.015320" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.015301" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.015796" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.015901" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.015659" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.016377" level="INFO">{1: 20}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.016082" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.016815" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.016577" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.017478" elapsed="0.000271"/>
</kw>
<msg time="2026-04-17T03:23:40.017849" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.017895" level="INFO">${old_connection_index} = 20</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.017021" elapsed="0.000896"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.018794" elapsed="0.000198"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.020282" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.019837" elapsed="0.001374">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.019309" elapsed="0.002019"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.021982" elapsed="0.000320"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.021509" elapsed="0.000922"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:40.018240" elapsed="0.004239"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.017994" elapsed="0.004535"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.017975" elapsed="0.004580"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.023495" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.023171" elapsed="0.000351"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:40.023573" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:23:40.023732" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.022784" elapsed="0.000972"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.023916" elapsed="0.000472"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.024682" level="INFO">index=21
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.024783" level="INFO">${karaf_connection_object} = index=21
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.024564" elapsed="0.000244"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.025003" elapsed="0.002633"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.028077" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:40.029348" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.027808" elapsed="0.001952">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.044026" elapsed="0.000436"/>
</kw>
<msg time="2026-04-17T03:23:40.044592" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.042254" elapsed="0.002515"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.044943" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.045358" elapsed="0.000023"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.030741" elapsed="0.014728"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.030078" elapsed="0.015454"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.014920" elapsed="0.030713">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.046057" elapsed="0.000029"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.046228" elapsed="0.000032"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.002000" elapsed="0.044436">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:40.046610" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.046677" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.997137" elapsed="0.049575"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.047238" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.046858" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.046831" elapsed="0.000492"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:39.996975" elapsed="0.050374"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:39.996799" elapsed="0.050587"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:39.994430" elapsed="0.053019"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:39.989338" elapsed="0.058171"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:39.988880" elapsed="0.058676"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:39.985971" elapsed="0.061640"/>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:40.054514" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.051351" elapsed="0.004930">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.056600" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.056401" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.056375" elapsed="0.000304"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.056716" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.050783" elapsed="0.006050">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.057014" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.057078" elapsed="0.000029"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.050213" elapsed="0.006979">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:40.057312" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.057356" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.049609" elapsed="0.007771"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.057541" elapsed="0.040686"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:40.099445" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.099307" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.099281" elapsed="0.000237"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.100167" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.099760" elapsed="0.000487">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:40.098844" elapsed="0.001517">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.100422" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.048876" elapsed="0.051646">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.100695" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.048322" elapsed="0.052481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.047852" elapsed="0.053046">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.102246" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.101911" elapsed="0.000379"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.101535" elapsed="0.000823"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.103223" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.102806" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.102786" elapsed="0.000524"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.103460" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.108907" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.108485" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:40.109171" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.109010" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.108991" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.109677" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.109382" elapsed="0.000321"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:40.110150" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_For_Empty_Ipv4_Topology_After_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.109863" elapsed="0.000313"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:23:40.110540" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:23:40.110363" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.111062" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.110721" elapsed="0.000441"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.111635" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.111326" elapsed="0.000337"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.112274" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:23:40.111820" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.112778" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.112484" elapsed="0.000341"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.108167" elapsed="0.004713"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.102589" elapsed="0.010340"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.101223" elapsed="0.011747"/>
</kw>
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:23:39.985345" elapsed="0.127670">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s9-t10" name="Start_Listening_BGP_Speaker" line="155">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.116891" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.116603" elapsed="0.000358">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.116376" elapsed="0.000651">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.116357" elapsed="0.000703">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.116185" elapsed="0.000986">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.117345" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.113905" elapsed="0.003551">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.118760" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.118446" elapsed="0.000356"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.118051" elapsed="0.000802"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.119698" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.119316" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.119298" elapsed="0.000483"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.119928" elapsed="0.000322"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.125462" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.125028" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:40.125707" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-17T03:23:40.125563" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.125545" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.125941" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.126130" elapsed="0.000023"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.126322" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.126490" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.126656" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.126821" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.126984" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.124715" elapsed="0.002344"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.119087" elapsed="0.008037"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.117746" elapsed="0.009420"/>
</kw>
<doc>Start Python speaker in listening mode.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.113429" elapsed="0.013775">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s9-t11" name="Reconfigure_ODL_To_Initiate_Connection" line="160">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.131025" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.130743" elapsed="0.000364">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.130522" elapsed="0.000657">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.130504" elapsed="0.000708">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.130326" elapsed="0.000973">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.131465" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.128084" elapsed="0.003487">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.132840" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.132531" elapsed="0.000351"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.132169" elapsed="0.000763"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.133760" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.133385" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.133367" elapsed="0.000479"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.133994" elapsed="0.000356"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.139732" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.139314" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:40.140050" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-17T03:23:40.139901" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.139881" elapsed="0.000270"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.140303" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.140477" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.140650" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.140816" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.140981" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.141162" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.141329" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.138935" elapsed="0.002470"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.133172" elapsed="0.008282"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.131850" elapsed="0.009645"/>
</kw>
<doc>Replace BGP peer config module, now with initiate-connection set to true.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.127506" elapsed="0.014027">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s9-t12" name="Wait_For_Stable_Listening_Ipv4_Topology" line="175">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.145597" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.145288" elapsed="0.000380">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.145045" elapsed="0.000691">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.145025" elapsed="0.000744">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.144854" elapsed="0.001005">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.146029" elapsed="0.000021"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.142455" elapsed="0.003712">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.147550" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.147235" elapsed="0.000356"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.146848" elapsed="0.000792"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.148479" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.148081" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.148062" elapsed="0.000502"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.148713" elapsed="0.000306"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.154348" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.153861" elapsed="0.000521"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:40.154644" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-17T03:23:40.154472" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.154449" elapsed="0.000350"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.154954" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.155149" elapsed="0.000030"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.155398" elapsed="0.000027"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.155630" elapsed="0.000028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.155860" elapsed="0.000026"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.156106" elapsed="0.000029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.156339" elapsed="0.000027"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.153518" elapsed="0.002925"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.147870" elapsed="0.008641"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.146535" elapsed="0.010031"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.141889" elapsed="0.014730">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s9-t13" name="Check_Listening_Ipv4_Topology_Count" line="183">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:40.161529" elapsed="0.000304"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:40.161147" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.163508" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.163344" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.163315" elapsed="0.000291"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.169746" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.169631" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.169611" elapsed="0.000223"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.170924" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:40.170525" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.171526" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:40.171138" elapsed="0.000423"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:40.171624" elapsed="0.000049"/>
</return>
<msg time="2026-04-17T03:23:40.171836" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:40.170076" elapsed="0.001787"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.178177" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.178014" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.177987" elapsed="0.000267"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.179614" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.179508" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.179489" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.180187" level="INFO">${karaf_connection_index} = 21</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.179831" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.180614" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.180391" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.181588" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.181263" elapsed="0.001104">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.182562" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:40.182608" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.180801" elapsed="0.001829"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.183463" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.183204" elapsed="0.001062">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.184474" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:40.184521" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.182809" elapsed="0.001735"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.185553" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.184853" elapsed="0.000776">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.184624" elapsed="0.001080">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.184602" elapsed="0.001135">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.185904" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.186214" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.186009" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.185978" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.186355" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.189223" elapsed="0.000157"/>
</kw>
<msg time="2026-04-17T03:23:40.189465" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.187879" elapsed="0.001727"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.189888" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.190318" elapsed="0.000081"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.187202" elapsed="0.003324"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.186639" elapsed="0.003977"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.179193" elapsed="0.011535">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</status>
</kw>
<msg time="2026-04-17T03:23:40.190858" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.190907" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_Listening_Ipv4_Topology_Count"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.178459" elapsed="0.012474"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.191161" elapsed="0.000211"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.191027" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.191003" elapsed="0.000426"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.192479" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.192336" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.192310" elapsed="0.000256"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.192862" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.192968" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.192728" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.193495" level="INFO">{1: 21}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.193217" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.194117" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.193768" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.194777" elapsed="0.000300"/>
</kw>
<msg time="2026-04-17T03:23:40.195240" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.195298" level="INFO">${old_connection_index} = 21</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.194370" elapsed="0.000952"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.196363" elapsed="0.000228"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.197823" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.197357" elapsed="0.001442">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.196765" elapsed="0.002138"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.199674" elapsed="0.000298"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.199078" elapsed="0.000976"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:40.195669" elapsed="0.004494"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.195413" elapsed="0.004800"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.195387" elapsed="0.004852"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.201241" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.200820" elapsed="0.000456"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:40.201341" elapsed="0.000043"/>
</return>
<msg time="2026-04-17T03:23:40.201555" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.200454" elapsed="0.001137"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.201820" elapsed="0.000512"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.202692" level="INFO">index=22
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.202796" level="INFO">${karaf_connection_object} = index=22
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.202567" elapsed="0.000256"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.202974" elapsed="0.002704"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.206135" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:40.207421" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.205851" elapsed="0.001970">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.223443" elapsed="0.000450"/>
</kw>
<msg time="2026-04-17T03:23:40.224028" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.221701" elapsed="0.002799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.224719" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.224919" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.208845" elapsed="0.016175"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.208255" elapsed="0.016815"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.191853" elapsed="0.033326">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.225640" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.225720" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.177616" elapsed="0.048229">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:40.225976" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.226022" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.172344" elapsed="0.053703"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.226509" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.226165" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.226136" elapsed="0.000485"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:40.172183" elapsed="0.054464"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:40.171925" elapsed="0.054757"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:40.169201" elapsed="0.057544"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:40.162895" elapsed="0.063907"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.162145" elapsed="0.064704"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:40.157894" elapsed="0.069011"/>
</kw>
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:40.232854" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.229875" elapsed="0.004830">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.235039" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.234826" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.234798" elapsed="0.000342"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.235185" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.229400" elapsed="0.005933">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.235523" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.235592" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.228849" elapsed="0.006865">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:40.235840" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.235885" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.228342" elapsed="0.007567"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.236128" elapsed="0.031607"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:40.268843" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.268635" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.268609" elapsed="0.000307"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.269470" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.269078" elapsed="0.000471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:40.268214" elapsed="0.001449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.269724" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.227616" elapsed="0.042206">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.269997" elapsed="0.000022"/>
</kw>
<arg>${COUNT_PREFIX_COUNT_SINGLE}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.227153" elapsed="0.042978">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.271527" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.271201" elapsed="0.000371"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.270783" elapsed="0.000839"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.272454" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.272059" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.272040" elapsed="0.000499"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.272687" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.278124" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.277688" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:40.278420" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.278229" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.278211" elapsed="0.000272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.278965" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.278641" elapsed="0.000359"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:40.279533" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_Listening_Ipv4_Topology_Count</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.279220" elapsed="0.000341"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:23:40.279901" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:23:40.279725" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.280451" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.280083" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.281001" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.280685" elapsed="0.000343"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.281645" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:23:40.281202" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.282187" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.281867" elapsed="0.000399"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.277373" elapsed="0.004966"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.271844" elapsed="0.010546"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.270474" elapsed="0.011958"/>
</kw>
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:23:40.157049" elapsed="0.125424">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_listening_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s9-t14" name="Kill_Listening_BGP_Speaker" line="189">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:40.285906" elapsed="0.000246"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:40.285637" elapsed="0.000578"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.287314" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.287173" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.287150" elapsed="0.000262"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.292279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.292168" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.292149" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.293359" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:40.292956" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.293843" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:40.293551" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:40.293911" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:23:40.294073" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:40.292576" elapsed="0.001536"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.299808" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.299700" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.299680" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.301046" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.300941" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.300923" elapsed="0.000263"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.301647" level="INFO">${karaf_connection_index} = 22</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.301345" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.302053" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.301836" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.302868" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.302608" elapsed="0.000934">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.303731" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:40.303777" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.302268" elapsed="0.001532"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.304608" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.304369" elapsed="0.000929">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.305482" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:40.305527" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.303970" elapsed="0.001580"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.306493" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.305850" elapsed="0.000705">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.305626" elapsed="0.000998">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.305607" elapsed="0.001050">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.306821" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.307049" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.306905" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.306888" elapsed="0.000252"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.307175" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.309683" elapsed="0.000147"/>
</kw>
<msg time="2026-04-17T03:23:40.309895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.308614" elapsed="0.001412"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.310387" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.310717" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.307979" elapsed="0.002922"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.307449" elapsed="0.003517"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.300642" elapsed="0.010408">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:23:40.311216" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.311264" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Kill_Listening_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.300027" elapsed="0.011260"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.311479" elapsed="0.000194"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.311369" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.311348" elapsed="0.000378"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.312545" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.312441" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.312422" elapsed="0.000229"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.312938" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.313040" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.312811" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.313500" level="INFO">{1: 22}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.313237" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.313941" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.313701" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.314604" elapsed="0.000260"/>
</kw>
<msg time="2026-04-17T03:23:40.314962" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.315007" level="INFO">${old_connection_index} = 22</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.314237" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.315854" elapsed="0.000189"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.317117" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.316702" elapsed="0.001266">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.316227" elapsed="0.001839"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.318837" elapsed="0.000284"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.318376" elapsed="0.000829"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:40.315351" elapsed="0.003901"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.315121" elapsed="0.004180"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.315087" elapsed="0.004238"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.320180" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.319858" elapsed="0.000348"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:40.320255" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:23:40.320405" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.319532" elapsed="0.000897"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.320588" elapsed="0.000413"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.321296" level="INFO">index=23
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.321395" level="INFO">${karaf_connection_object} = index=23
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.321187" elapsed="0.000233"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.321570" elapsed="0.002583"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.324593" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:40.325657" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.324329" elapsed="0.001702">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.339701" elapsed="0.000388"/>
</kw>
<msg time="2026-04-17T03:23:40.340200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.338165" elapsed="0.002184"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.340515" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.340729" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.326875" elapsed="0.013939"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.326359" elapsed="0.014501"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.312147" elapsed="0.028796">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.341313" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.341390" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.299360" elapsed="0.042138">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:40.341606" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.341650" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.294598" elapsed="0.047076"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.342013" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.341754" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.341734" elapsed="0.000516"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:40.294444" elapsed="0.047843"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:40.294171" elapsed="0.048152"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:40.291795" elapsed="0.050588"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:40.286856" elapsed="0.055584"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.286409" elapsed="0.056076"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:40.283458" elapsed="0.059083"/>
</kw>
<kw name="Kill_BGP_Speaker" owner="BGPSpeaker">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.343734" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.343425" elapsed="0.000336"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-17T03:23:40.343915" elapsed="0.000267"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-17T03:23:40.343157" elapsed="0.001092"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.346043" level="INFO">^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:23:40.344733" elapsed="0.001804"/>
</kw>
<msg time="2026-04-17T03:23:40.346704" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.346751" level="INFO">${message} =  ^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.344406" elapsed="0.002372"/>
</kw>
<kw name="Dump_BGP_Speaker_Logs" owner="BGPSpeaker">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.347440" level="INFO">Executing command 'cat play.py.out'.</msg>
<msg time="2026-04-17T03:23:40.359492" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:40.359621" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${BGPSpeaker__OUTPUT_LOG}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:40.347294" elapsed="0.012361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.360272" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.359885" elapsed="0.000444"/>
</kw>
<doc>Send all output produced by the play.py utility to Robot logs.
This needs to be called if your suite detects play.py crashing and bypasses
Kill_BGP_Speaker in that case otherwise the output of play.py (which most
likely contains clues about why it crashed) will be lost.</doc>
<status status="PASS" start="2026-04-17T03:23:40.346990" elapsed="0.013415"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<status status="PASS" start="2026-04-17T03:23:40.360661" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-17T03:23:40.360506" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.360479" elapsed="0.000294"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.360982" elapsed="0.000029"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The prompt was not seen within timeout period.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.361239" elapsed="0.000029"/>
</kw>
<doc>Interrupt play.py, fail if no prompt is seen within SSHLibrary timeout.
Also dump the logs with the output the program produced.
This keyword is also suitable for stopping BGP manager.</doc>
<status status="PASS" start="2026-04-17T03:23:40.342821" elapsed="0.018590"/>
</kw>
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.362585" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.362072" elapsed="0.000571"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:23:40.361681" elapsed="0.001044"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.364932" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.364069" elapsed="0.000952"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.364043" elapsed="0.001014"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.365292" elapsed="0.000445"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.372861" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.372250" elapsed="0.000651"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:40.373248" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-17T03:23:40.373012" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.372984" elapsed="0.000386"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.373593" elapsed="0.000031"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.373853" elapsed="0.000030"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.374129" elapsed="0.000031"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.374441" elapsed="0.000031"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.374692" elapsed="0.000029"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.374939" elapsed="0.000028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.375197" elapsed="0.000024"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.371772" elapsed="0.003507"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.363778" elapsed="0.011552"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.363080" elapsed="0.012291"/>
</kw>
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:23:40.282849" elapsed="0.092562"/>
</test>
<test id="s1-s9-t15" name="Store_Results_For_Listening_BGP_Speaker" line="198">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:40.378690" elapsed="0.000216"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:40.378425" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.379965" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.379854" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.379834" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.384955" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.384848" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.384830" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.386050" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:40.385659" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.386642" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:40.386328" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:40.386781" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:23:40.386944" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:40.385274" elapsed="0.001694"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.392610" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.392502" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.392482" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.393849" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.393744" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.393726" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.394478" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.394064" elapsed="0.000442"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.394893" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.394671" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.395785" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.395501" elapsed="0.000957">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.396644" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:40.396689" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.395082" elapsed="0.001630"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.397501" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.397255" elapsed="0.000919">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.398399" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:40.398444" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.396886" elapsed="0.001580"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.399640" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.398766" elapsed="0.000961">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.398543" elapsed="0.001320">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.398523" elapsed="0.001406">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.400209" elapsed="0.000033"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.400534" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.400332" elapsed="0.000273"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.400308" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.400682" elapsed="0.000021"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.404890" elapsed="0.000360"/>
</kw>
<msg time="2026-04-17T03:23:40.405394" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.402743" elapsed="0.002942"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.406385" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.407283" elapsed="0.000167"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.401826" elapsed="0.005869"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.401055" elapsed="0.006785"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.393444" elapsed="0.014697">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:23:40.408380" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.408477" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Store_Results_For_Listening_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.392832" elapsed="0.015696"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.408938" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.408697" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.408655" elapsed="0.000433"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.411373" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.411265" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.411245" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.411718" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.411821" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.411593" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.412277" level="INFO">{1: 23}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.412000" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.412713" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.412474" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.413294" elapsed="0.000258"/>
</kw>
<msg time="2026-04-17T03:23:40.413649" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.413693" level="INFO">${old_connection_index} = 23</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.412915" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.414548" elapsed="0.000192"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.415826" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.415425" elapsed="0.001279">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.414909" elapsed="0.001893"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.417464" elapsed="0.000275"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.416978" elapsed="0.000843"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:40.414011" elapsed="0.003856"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.413789" elapsed="0.004127"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.413771" elapsed="0.004169"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.418813" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.418511" elapsed="0.000328"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:40.418886" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:23:40.419037" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.418183" elapsed="0.000878"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.419243" elapsed="0.000415"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.419934" level="INFO">index=24
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.420032" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.419826" elapsed="0.000231"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.420223" elapsed="0.002484"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.423250" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:40.424316" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.422917" elapsed="0.001781">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.438069" elapsed="0.000444"/>
</kw>
<msg time="2026-04-17T03:23:40.438605" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.436724" elapsed="0.002031"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.438920" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.439084" elapsed="0.000036"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.425532" elapsed="0.013653"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.424989" elapsed="0.014242"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.410522" elapsed="0.028796">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.439683" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.439758" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.392162" elapsed="0.047707">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:40.439981" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.440025" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.387382" elapsed="0.052666"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.440704" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.440440" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.440418" elapsed="0.000363"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:40.387231" elapsed="0.053575"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:40.387027" elapsed="0.053814"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:40.384482" elapsed="0.056420"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:40.379563" elapsed="0.061395"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.379130" elapsed="0.061875"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:40.376283" elapsed="0.064774"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.448534" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:23:40.448628" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:23:40.441770" elapsed="0.006885"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.448961" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:23:40.461156" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:40.461368" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:40.448822" elapsed="0.012600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.462650" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.461787" elapsed="0.001025"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:40.464070" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:23:40.463392" elapsed="0.000937"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:23:40.441236" elapsed="0.023242"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.508183" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:23:40.508322" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:23:40.465808" elapsed="0.042550"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.508788" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:23:40.520932" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:40.521173" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:40.508593" elapsed="0.012637"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.522236" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.521593" elapsed="0.000735"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:40.523320" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:23:40.522710" elapsed="0.000730"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:23:40.464843" elapsed="0.058728"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.567022" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:23:40.567461" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:23:40.524786" elapsed="0.042721"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.568462" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:23:40.580849" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:40.581141" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:40.568055" elapsed="0.013156"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.583490" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.581602" elapsed="0.002062"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:40.584884" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-listening-totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-listening-totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:23:40.584222" elapsed="0.000790"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>prefixcount-listening-totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:23:40.523892" elapsed="0.061299"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.624002" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:23:40.624175" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:23:40.586663" elapsed="0.037552"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.624694" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:23:40.637432" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:40.637583" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:40.624466" elapsed="0.013153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.638416" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.637857" elapsed="0.000623"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:40.639084" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-listening-performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/prefixcount-listening-performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:23:40.638732" elapsed="0.000451"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>prefixcount-listening-performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:23:40.585555" elapsed="0.053718"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.640153" elapsed="0.000384"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.641846" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.641242" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.641202" elapsed="0.000937"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.642424" elapsed="0.000455"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.650221" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.649524" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:23:40.650576" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-17T03:23:40.650367" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.650340" elapsed="0.000367"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.650971" elapsed="0.000034"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.651243" elapsed="0.000029"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.651488" elapsed="0.000027"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.651721" elapsed="0.000036"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.651961" elapsed="0.000027"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.652220" elapsed="0.000029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.652454" elapsed="0.000027"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.649068" elapsed="0.003507"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.640889" elapsed="0.011757"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.639688" elapsed="0.013015"/>
</kw>
<doc>Store results for plotting</doc>
<status status="PASS" start="2026-04-17T03:23:40.375753" elapsed="0.277005"/>
</test>
<test id="s1-s9-t16" name="Wait_For_Stable_Ipv4_Topology_After_Listening" line="208">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.657364" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.657068" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.657044" elapsed="0.000413"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.656859" elapsed="0.000646"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.658650" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.658531" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.658512" elapsed="0.000207"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.664203" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.664075" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.664057" elapsed="0.000216"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.665329" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:40.664916" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.665880" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:40.665525" elapsed="0.000389"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:40.665971" elapsed="0.000038"/>
</return>
<msg time="2026-04-17T03:23:40.666213" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:40.664515" elapsed="0.001726"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.671831" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.671716" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.671694" elapsed="0.000293"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.673306" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.673195" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.673176" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.673869" level="INFO">${karaf_connection_index} = 24</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.673526" elapsed="0.000374"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.674347" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.674111" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.675337" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.674953" elapsed="0.001214">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.676371" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:40.676418" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.674538" elapsed="0.001903"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.677275" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.676973" elapsed="0.000966">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.678186" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:40.678233" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.676615" elapsed="0.001641"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.679453" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.678561" elapsed="0.000963">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.678333" elapsed="0.001267">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.678313" elapsed="0.001319">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.679802" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.680032" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.679888" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.679871" elapsed="0.000255"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.680160" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.682747" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:23:40.682960" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.681656" elapsed="0.001516"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.683470" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.683805" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.680995" elapsed="0.002997"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.680450" elapsed="0.003609"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.672828" elapsed="0.011337">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</kw>
<msg time="2026-04-17T03:23:40.684276" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.684320" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Wait_For_Stable_Ipv4_Topology_After_Listening"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.672177" elapsed="0.012167"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.684532" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.684420" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.684401" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.685482" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.685373" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.685355" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.685842" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.685945" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.685706" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.686483" level="INFO">{1: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.686211" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.686931" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.686687" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.687537" elapsed="0.000266"/>
</kw>
<msg time="2026-04-17T03:23:40.687900" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.687946" level="INFO">${old_connection_index} = 24</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.687155" elapsed="0.000813"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.688816" elapsed="0.000196"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.690315" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.689718" elapsed="0.001486">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.689214" elapsed="0.002096"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.691966" elapsed="0.000293"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.691498" elapsed="0.000842"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:40.688289" elapsed="0.004097"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.688044" elapsed="0.004391"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.688025" elapsed="0.004434"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.693342" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.692999" elapsed="0.000370"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:40.693417" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:23:40.693565" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.692672" elapsed="0.000917"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.693747" elapsed="0.000500"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.696457" level="INFO">index=25
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.696566" level="INFO">${karaf_connection_object} = index=25
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.694425" elapsed="0.002167"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.696758" elapsed="0.002495"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.699712" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:40.700862" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.699434" elapsed="0.001850">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.715329" elapsed="0.000391"/>
</kw>
<msg time="2026-04-17T03:23:40.715848" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.713721" elapsed="0.002281"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.716184" elapsed="0.000024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.716352" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.702169" elapsed="0.014266"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.701591" elapsed="0.014890"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.685045" elapsed="0.031521">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.716913" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.716990" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.671342" elapsed="0.045795">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:40.717260" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.717304" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.666704" elapsed="0.050623"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.717672" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.717407" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.717387" elapsed="0.000363"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:40.666519" elapsed="0.051254"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:40.666312" elapsed="0.051498"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:40.663699" elapsed="0.054169"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:40.658190" elapsed="0.059734"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.657673" elapsed="0.060296"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:40.654034" elapsed="0.063987"/>
</kw>
<kw name="Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable" owner="PrefixCounting">
<if>
<branch type="IF" condition="&quot;&quot;&quot;${shards_list}&quot;&quot;&quot;==&quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:40.737580" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:23:40.737799" level="INFO">${getter} = ['Get_Ipv4_Topology_Count', [], {'session': 'operational', 'topology': 'example-ipv4-topology'}]</msg>
<var>${getter}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.737163" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.734950" elapsed="0.002935"/>
</branch>
<branch type="ELSE">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<var>${getter}</var>
<arg>Get_Ipv4_Topology_Count_With_Shards_Check</arg>
<arg>${shards_list}</arg>
<arg>${shards_details}</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.738175" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.737917" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.734930" elapsed="0.003345"/>
</if>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:40.738772" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:23:40.738995" level="INFO">${validator} = ['WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'excluded_value': '600000'}]</msg>
<var>${validator}</var>
<arg>WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword</arg>
<arg>state_holder</arg>
<arg>data_holder</arg>
<arg>excluded_value=${excluded_count}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.738470" elapsed="0.000552"/>
</kw>
<kw name="Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.740484" level="INFO">${tmp} = 1</msg>
<var>${tmp}</var>
<arg>int(${count})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.740088" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.740963" level="INFO">count=1</msg>
<arg>count=${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.740672" elapsed="0.000338"/>
</kw>
<kw name="WaitUtils__Check_Sanity_And_Compute_Derived_Times" owner="WaitUtils">
<if>
<branch type="IF" condition="int(${count}) &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>\${count} is ${count} and not at least 1.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.742041" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.741782" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.741763" elapsed="0.000378"/>
</if>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:23:40.742565" level="INFO">${period_in_seconds} = 60.0</msg>
<var>${period_in_seconds}</var>
<arg>${period}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:23:40.742291" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="${period_in_seconds} &lt;= 0.0">
<kw name="Fail" owner="BuiltIn">
<arg>\${period} ${period} has to be positive.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.742894" elapsed="0.000248"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.742662" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.742644" elapsed="0.000562"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:23:40.743535" level="INFO">${date_now} = 2026-04-17 03:23:40.743</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:23:40.743360" elapsed="0.000201"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:23:40.743986" level="INFO">${timeout_in_seconds} = 560.0</msg>
<var>${timeout_in_seconds}</var>
<arg>${timeout}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:23:40.743714" elapsed="0.000301"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-17T03:23:40.744532" level="INFO">${date_deadline} = 2026-04-17 03:33:00.743</msg>
<var>${date_deadline}</var>
<arg>${date_now}</arg>
<arg>${timeout_in_seconds}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-17T03:23:40.744197" elapsed="0.000361"/>
</kw>
<return>
<value>${timeout_in_seconds}</value>
<value>${period_in_seconds}</value>
<value>${date_deadline}</value>
<status status="PASS" start="2026-04-17T03:23:40.744605" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:23:40.744843" level="INFO">${timeout_in_seconds} = 560.0</msg>
<msg time="2026-04-17T03:23:40.744901" level="INFO">${period_in_seconds} = 60.0</msg>
<msg time="2026-04-17T03:23:40.744947" level="INFO">${date_deadline} = 2026-04-17 03:33:00.743</msg>
<var>${timeout_in_seconds}</var>
<var>${period_in_seconds}</var>
<var>${date_deadline}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${count}</arg>
<doc>Common checks for argument values. Return times in seconds and deadline date implied by timeout time.</doc>
<status status="PASS" start="2026-04-17T03:23:40.741367" elapsed="0.003602"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.745634" level="INFO">${maximum_sleeps} = 10</msg>
<var>${maximum_sleeps}</var>
<arg>math.ceil(${timeout_in_seconds} / ${period_in_seconds})</arg>
<arg>modules=math</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.745158" elapsed="0.000504"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.746209" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.745855" elapsed="0.000380"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.746681" level="INFO">${state} = 600000</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.746397" elapsed="0.000309"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline" owner="WaitUtils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.748577" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.748302" elapsed="0.000301"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.749065" level="INFO">${state} = 600000</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.748761" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.749638" level="INFO">${sleeps} = 0</msg>
<var>${sleeps}</var>
<arg>${count} - 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.749266" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="WaitUtils__Is_Deadline_Reachable" owner="WaitUtils">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:23:40.751156" level="INFO">${date_now} = 2026-04-17 03:23:40.751</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:23:40.750981" elapsed="0.000202"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-17T03:23:40.751723" level="INFO">${time_deadline} = 559.992</msg>
<var>${time_deadline}</var>
<arg>${date_deadline}</arg>
<arg>${date_now}</arg>
<arg>result_format=number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-17T03:23:40.751338" elapsed="0.000412"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.752370" level="INFO">${time_minimal} = 0.0</msg>
<var>${time_minimal}</var>
<arg>int(${sleeps_left}) * ${period_in_seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.751947" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="${time_minimal} &gt;= ${time_deadline}">
<kw name="Fail" owner="BuiltIn">
<arg>Not possible to succeed within the deadline. ${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.752733" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.752468" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.752448" elapsed="0.000365"/>
</if>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Compute time to be wasted in sleeps, compare to deadline. Fail with message when needed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.750364" elapsed="0.002501"/>
</kw>
<msg time="2026-04-17T03:23:40.752988" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.753033" level="INFO">${message} = None</msg>
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.749849" elapsed="0.003206"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.753317" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.753203" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.753173" elapsed="0.000226"/>
</if>
<for flavor="IN RANGE">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Closure_As_Is" owner="ScalarClosures">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.758816" level="INFO">${keyword} = Get_Ipv4_Topology_Count</msg>
<msg time="2026-04-17T03:23:40.758911" level="INFO">${args} = []</msg>
<msg time="2026-04-17T03:23:40.758984" level="INFO">${kwargs} = {'session': 'operational', 'topology': 'example-ipv4-topology'}</msg>
<var>${keyword}</var>
<var>${args}</var>
<var>${kwargs}</var>
<arg>${closure}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.757738" elapsed="0.001283"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:40.767499" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.763579" elapsed="0.005791">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.769863" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.769595" elapsed="0.000343"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.769533" elapsed="0.000452"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.770111" elapsed="0.000044"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.761986" elapsed="0.008324">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.770584" elapsed="0.000047"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.770714" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.760205" elapsed="0.010683">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var>${result}</var>
<arg>${keyword}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.759405" elapsed="0.011542">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.771008" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Run the keyword from closure without affecting arguments.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.757130" elapsed="0.014023">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:40.771297" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.771346" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.756291" elapsed="0.015080"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.771554" elapsed="0.044994"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:40.817907" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.817758" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.817724" elapsed="0.000288"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.818689" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.818217" elapsed="0.000562">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:40.817217" elapsed="0.001781">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.819064" elapsed="0.000019"/>
</return>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.755500" elapsed="0.063687">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:40.819322" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.819367" level="INFO">${data} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${data}</var>
<arg>ScalarClosures.Run_Keyword_And_Collect_Garbage</arg>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.753999" elapsed="0.065391"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Getter failed: ${data}</value>
<status status="PASS" start="2026-04-17T03:23:40.819577" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-17T03:23:40.819469" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.819451" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.819843" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.819979" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.819945" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.819927" elapsed="0.000118"/>
</if>
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments</arg>
<arg>${safe_validator}</arg>
<arg>${state}</arg>
<arg>${data}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.820284" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Validator failed: ${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.820425" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.820390" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.820373" elapsed="0.000119"/>
</if>
<if>
<branch type="IF" condition="${sleeps_left} &lt;= 0">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.820575" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.820541" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.820527" elapsed="0.000114"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.820793" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.820924" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.820891" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.820875" elapsed="0.000112"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.821141" elapsed="0.000021"/>
</kw>
<var name="${sleeps_left}">0</var>
<status status="PASS" start="2026-04-17T03:23:40.753828" elapsed="0.067369"/>
</iter>
<var>${sleeps_left}</var>
<value>${count}-1</value>
<value>-1</value>
<value>-1</value>
<status status="PASS" start="2026-04-17T03:23:40.753438" elapsed="0.067799"/>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.821398" elapsed="0.000020"/>
</kw>
<msg time="2026-04-17T03:23:40.821625" level="INFO">${state} = 600000</msg>
<msg time="2026-04-17T03:23:40.821669" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.821710" level="INFO">${result} = Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content...</msg>
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>count=${count}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${safe_validator}</arg>
<arg>initial_state=${state}</arg>
<doc>Pass only if consecutively 1 times in a row with 60 between attempts: ${getter} creates data and ${safe_validator} passes. Validator updates its state even if it reports failure. Always return validator state, status and message.</doc>
<status status="PASS" start="2026-04-17T03:23:40.747581" elapsed="0.074152"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.821926" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.821821" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.821804" elapsed="0.000198"/>
</if>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.823346" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:23:40.823464" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.823034" elapsed="0.000492">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:23:40.823629" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.823673" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.822672" elapsed="0.001024"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.823875" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.823769" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.823750" elapsed="0.000190"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:23:40.824365" level="INFO">@{message_chunks} = [ Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conte...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:23:40.824089" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.827578" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:23:40.827656" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.824896" elapsed="0.002820">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:23:40.827819" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.827863" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.824558" elapsed="0.003329"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="PASS" start="2026-04-17T03:23:40.828065" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-17T03:23:40.827960" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.827941" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.828316" elapsed="0.000022"/>
</kw>
<arg>${result}</arg>
<arg>Not possible to succeed within the deadline.</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="PASS" start="2026-04-17T03:23:40.822295" elapsed="0.006174"/>
</kw>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.829728" level="INFO">Length is 362.</msg>
<msg time="2026-04-17T03:23:40.829801" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.829476" elapsed="0.000383">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:23:40.829960" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.830021" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?conten...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.829138" elapsed="0.000907"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.830247" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.830140" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.830121" elapsed="0.000192"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:23:40.830703" level="INFO">@{message_chunks} = [  | : ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconf...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:23:40.830459" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.833641" level="INFO">Length is 0.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:23:40.831241" elapsed="0.002479"/>
</kw>
<msg time="2026-04-17T03:23:40.833813" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.833856" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.830895" elapsed="0.002984"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.834073" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.833952" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.833933" elapsed="0.000221"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.834604" level="FAIL">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.834298" elapsed="0.000368">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${result}</arg>
<arg>Getter failed</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.828749" elapsed="0.006021">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.834938" elapsed="0.000022"/>
</kw>
<var name="${try}">1</var>
<status status="FAIL" start="2026-04-17T03:23:40.747033" elapsed="0.087975">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${try}</var>
<value>1</value>
<value>${maximum_sleeps}+2</value>
<status status="FAIL" start="2026-04-17T03:23:40.746766" elapsed="0.088302">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.835249" elapsed="0.000021"/>
</kw>
<var>${result}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${repetitions}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${validator}</arg>
<arg>initial_state=${excluded_count}</arg>
<doc>Analogue of Wait Until Keyword Succeeds, but it passes state of validator around and exits early on getter failure. Calls GASSVHTSCBD to verify data is "stable".</doc>
<status status="FAIL" start="2026-04-17T03:23:40.739386" elapsed="0.095972">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.835429" elapsed="0.000017"/>
</return>
<arg>timeout=${bgp_filling_timeout}</arg>
<arg>period=${CHECK_PERIOD_PREFIX_COUNT_SINGLE}</arg>
<arg>repetitions=${REPETITIONS_PREFIX_COUNT_SINGLE}</arg>
<arg>excluded_count=${COUNT_PREFIX_COUNT_SINGLE}</arg>
<doc>Each ${period} get prefix count. When called with shard list, the check is done before the count is get. After 1 of stable different from ${excluded_count} within ${timeout}, Return validator output. Fail early on getter error.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.730444" elapsed="0.105080">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.836873" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.836555" elapsed="0.000360"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.836187" elapsed="0.000779"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.837796" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.837417" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.837398" elapsed="0.000483"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.838143" elapsed="0.000320"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.843688" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.843273" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:40.843970" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.843826" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.843806" elapsed="0.000226"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.844494" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.844196" elapsed="0.000324"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:40.844940" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Wait_For_Stable_Ipv4_Topology_After_Listening</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.844679" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:23:40.845326" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:23:40.845150" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.845846" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.845507" elapsed="0.000366"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.846395" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.846069" elapsed="0.000354"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.847013" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:23:40.846580" elapsed="0.000486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.847534" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.847239" elapsed="0.000344"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.842937" elapsed="0.004700"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.837204" elapsed="0.010482"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.835865" elapsed="0.011862"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:23:40.653213" elapsed="0.194556">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s9-t17" name="Check_For_Empty_Ipv4_Topology_After_Listening" line="217">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:40.851184" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:40.850901" elapsed="0.000544"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.852430" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.852321" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.852302" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.857304" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.857194" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.857176" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.858415" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:40.858001" elapsed="0.000473"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.858940" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:40.858641" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:40.859010" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:23:40.859181" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:40.857594" elapsed="0.001612"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.864765" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.864660" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.864641" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.866050" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.865908" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.865889" elapsed="0.000255"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.866739" level="INFO">${karaf_connection_index} = 25</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.866299" elapsed="0.000466"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.867166" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.866927" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.867983" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.867695" elapsed="0.000974">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.868852" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:40.868897" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.867358" elapsed="0.001561"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.869693" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.869448" elapsed="0.000924">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.870556" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:40.870600" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.869103" elapsed="0.001519"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.871547" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.870919" elapsed="0.000689">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.870697" elapsed="0.000980">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.870678" elapsed="0.001031">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.871873" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.872114" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.871957" elapsed="0.000211"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.871940" elapsed="0.000251"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.872224" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.874753" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:23:40.874962" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.873670" elapsed="0.001419"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.875396" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.875725" elapsed="0.000111"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.873041" elapsed="0.002907"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.872506" elapsed="0.003506"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.865607" elapsed="0.010507">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</kw>
<msg time="2026-04-17T03:23:40.876219" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.876263" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Check_For_Empty_Ipv4_Topology_After_Listening"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.864985" elapsed="0.011301"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.876469" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.876362" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.876343" elapsed="0.000188"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.877508" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.877405" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.877387" elapsed="0.000187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.877860" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.877993" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.877729" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.878562" level="INFO">{1: 25}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.878191" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.879001" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.878760" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.879673" elapsed="0.000256"/>
</kw>
<msg time="2026-04-17T03:23:40.880026" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.880070" level="INFO">${old_connection_index} = 25</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.879309" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.880918" elapsed="0.000207"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.882211" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.881774" elapsed="0.001266">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.881298" elapsed="0.001949"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.883881" elapsed="0.000288"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.883425" elapsed="0.000826"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:40.880409" elapsed="0.003887"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.880184" elapsed="0.004161"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.880165" elapsed="0.004204"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.885219" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.884902" elapsed="0.000343"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:40.885292" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:23:40.885440" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.884577" elapsed="0.000887"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.885620" elapsed="0.000445"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.886372" level="INFO">index=26
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.886511" level="INFO">${karaf_connection_object} = index=26
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.886264" elapsed="0.000275"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.886692" elapsed="0.002515"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.889642" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:40.890782" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.889378" elapsed="0.001793">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.904467" elapsed="0.000382"/>
</kw>
<msg time="2026-04-17T03:23:40.904934" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.903166" elapsed="0.001913"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.905258" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.905424" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.891952" elapsed="0.013552"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.891445" elapsed="0.014103"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.877112" elapsed="0.028518">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.905984" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.906058" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.864323" elapsed="0.042028">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:40.906458" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.906501" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.859600" elapsed="0.046923"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.906854" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.906601" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.906582" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:40.859452" elapsed="0.047501"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:40.859267" elapsed="0.047718"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:40.856824" elapsed="0.050219"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:40.852017" elapsed="0.055094"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.851597" elapsed="0.055562"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:40.848766" elapsed="0.058447"/>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:40.913288" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.910511" elapsed="0.004464">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.915398" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.915225" elapsed="0.000228"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.915201" elapsed="0.000276"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.915511" elapsed="0.000015"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.909798" elapsed="0.005820">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.915792" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.915858" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.909277" elapsed="0.006678">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:40.916060" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.916121" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.908781" elapsed="0.007365"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.916312" elapsed="0.034692"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:40.952112" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.951957" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.951931" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.952751" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.952356" elapsed="0.000474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:40.951516" elapsed="0.001431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.953007" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.908304" elapsed="0.044821">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.953301" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.907771" elapsed="0.045639">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.907426" elapsed="0.046078">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.954878" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:40.954558" elapsed="0.000362"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:40.954177" elapsed="0.000792"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.955861" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.955487" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.955469" elapsed="0.000477"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.956110" elapsed="0.000311"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.961529" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.961111" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:40.961769" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.961629" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.961610" elapsed="0.000220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.962309" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:40.961995" elapsed="0.000340"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:40.962760" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Check_For_Empty_Ipv4_Topology_After_Listening</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.962496" elapsed="0.000290"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:23:40.963133" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:23:40.962946" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.963653" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.963315" elapsed="0.000364"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.964154" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:40.963835" elapsed="0.000347"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.964765" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:23:40.964337" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.965290" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.964970" elapsed="0.000368"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:40.960789" elapsed="0.004603"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.955273" elapsed="0.010168"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:40.953810" elapsed="0.011672"/>
</kw>
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:23:40.848183" elapsed="0.117337">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s9-t18" name="Delete_Bgp_Peer_Configuration" line="223">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:23:40.968986" elapsed="0.000223"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:23:40.968721" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.970257" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.970145" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.970125" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.975117" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.974999" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.974981" elapsed="0.000204"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.976178" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:40.975785" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.976660" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:40.976367" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:40.976729" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:23:40.976886" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:40.975409" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.982559" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.982454" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.982435" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.983796" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.983686" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.983667" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:40.984331" level="INFO">${karaf_connection_index} = 26</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.984008" elapsed="0.000349"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.984729" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.984516" elapsed="0.000238"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.985519" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.985264" elapsed="0.000928">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.986383" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:40.986428" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.984913" elapsed="0.001539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.987219" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.986960" elapsed="0.000889">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:40.988029" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:40.988073" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.986622" elapsed="0.001489"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.989003" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.988407" elapsed="0.000655">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:40.988188" elapsed="0.000962">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:40.988168" elapsed="0.001015">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.989348" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.989571" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:40.989431" elapsed="0.000223"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:40.989414" elapsed="0.000264"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.989710" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.992205" elapsed="0.000144"/>
</kw>
<msg time="2026-04-17T03:23:40.992409" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:40.991169" elapsed="0.001366"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.992807" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:40.993172" elapsed="0.000071"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:40.990550" elapsed="0.002800"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:40.990003" elapsed="0.003408"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.983386" elapsed="0.010106">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</status>
</kw>
<msg time="2026-04-17T03:23:40.993591" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:40.993634" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Prefixcount.Delete_Bgp_Peer_Configuration"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.982778" elapsed="0.010879"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.993836" elapsed="0.000188"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.993730" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.993712" elapsed="0.000365"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:40.994876" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:40.994773" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.994755" elapsed="0.000186"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.995233" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:40.995335" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:40.995107" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.995770" level="INFO">{1: 26}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.995514" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:40.996224" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:40.995967" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:40.996782" elapsed="0.000254"/>
</kw>
<msg time="2026-04-17T03:23:40.997200" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:40.997247" level="INFO">${old_connection_index} = 26</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.996427" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:40.998087" elapsed="0.000204"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:40.999339" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.998929" elapsed="0.001251">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.998462" elapsed="0.001814"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:41.000903" elapsed="0.000374"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:41.000447" elapsed="0.000911"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:40.997566" elapsed="0.003869"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:40.997345" elapsed="0.004148"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:40.997326" elapsed="0.004192"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:41.002441" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.002136" elapsed="0.000332"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:41.002514" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:23:41.002662" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:41.001727" elapsed="0.000959"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.002839" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:41.003548" level="INFO">index=27
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:41.003647" level="INFO">${karaf_connection_object} = index=27
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:41.003442" elapsed="0.000231"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.003823" elapsed="0.002399"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:41.006650" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:41.007821" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:41.006389" elapsed="0.001820">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:41.021927" elapsed="0.000401"/>
</kw>
<msg time="2026-04-17T03:23:41.022414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:41.020280" elapsed="0.002281"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.022723" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.022887" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:41.008991" elapsed="0.013975"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:41.008483" elapsed="0.014529"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.994485" elapsed="0.028623">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.023450" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:41.023523" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.982120" elapsed="0.041506">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:41.023729" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:41.023772" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.977308" elapsed="0.046487"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.024144" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:41.023870" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:41.023851" elapsed="0.000373"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:40.977156" elapsed="0.047115"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:40.976964" elapsed="0.047353"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:40.974644" elapsed="0.049745"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:40.969832" elapsed="0.054614"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:40.969414" elapsed="0.055076"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:23:40.966592" elapsed="0.057985"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.025516" level="INFO">&amp;{mapping} = { DEVICE_NAME=controller-config | BGP_NAME=example-bgp-peer | IP=10.30.171.117 | BGP_RIB_OPENCONFIG=example-bgp-rib }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>BGP_NAME=${BGP_PEER_NAME}</arg>
<arg>IP=${TOOLS_SYSTEM_IP}</arg>
<arg>BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.024751" elapsed="0.000793"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.067928" level="INFO">${file_path_stream} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:41.067552" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:23:41.068721" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:23:41.068474" elapsed="0.000312">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-17T03:23:41.068878" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:23:41.068137" elapsed="0.000765"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.069469" level="INFO">${file_path} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:41.069067" elapsed="0.000434"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-17T03:23:41.069841" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer/location.uri"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-17T03:23:41.070024" level="INFO">${template} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,$BGP_RIB_OPENCONFIG/bgp-openconfig-ext...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-17T03:23:41.069699" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.070477" level="INFO">rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,$BGP_RIB_OPENCONFIG/bgp-openconfig-extensions:bgp/neighbors/neighbor=$IP
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:41.070233" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.071489" level="INFO">mapping: {'DEVICE_NAME': 'controller-config', 'BGP_NAME': 'example-bgp-peer', 'IP': '10.30.171.117', 'BGP_RIB_OPENCONFIG': 'example-bgp-rib'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:41.071232" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.071951" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.071692" elapsed="0.000284"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.072658" level="INFO">${value} = controller-config</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:23:41.072361" elapsed="0.000323"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:41.073427" level="INFO">${encoded} = controller-config</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.073209" elapsed="0.000243"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:23:41.073501" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:23:41.073650" level="INFO">${encoded_value} = controller-config</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:23:41.072875" elapsed="0.000800"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.073827" elapsed="0.000238"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">controller-config</var>
<status status="PASS" start="2026-04-17T03:23:41.072219" elapsed="0.001901"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.074666" level="INFO">${value} = example-bgp-peer</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:23:41.074373" elapsed="0.000318"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:41.075427" level="INFO">${encoded} = example-bgp-peer</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.075214" elapsed="0.000239"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:23:41.075502" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:23:41.075648" level="INFO">${encoded_value} = example-bgp-peer</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:23:41.074880" elapsed="0.000791"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.075821" elapsed="0.000292"/>
</kw>
<var name="${key}">BGP_NAME</var>
<var name="${value}">example-bgp-peer</var>
<status status="PASS" start="2026-04-17T03:23:41.074239" elapsed="0.001917"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.076698" level="INFO">${value} = 10.30.171.117</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:23:41.076403" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:41.077460" level="INFO">${encoded} = 10.30.171.117</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.077249" elapsed="0.000236"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:23:41.077534" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:23:41.077681" level="INFO">${encoded_value} = 10.30.171.117</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:23:41.076912" elapsed="0.000793"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.077893" elapsed="0.000421"/>
</kw>
<var name="${key}">IP</var>
<var name="${value}">10.30.171.117</var>
<status status="PASS" start="2026-04-17T03:23:41.076269" elapsed="0.002088"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.078900" level="INFO">${value} = example-bgp-rib</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:23:41.078605" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:41.079658" level="INFO">${encoded} = example-bgp-rib</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.079448" elapsed="0.000235"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:23:41.079732" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:23:41.079878" level="INFO">${encoded_value} = example-bgp-rib</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:23:41.079130" elapsed="0.000771"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.080051" elapsed="0.000235"/>
</kw>
<var name="${key}">BGP_RIB_OPENCONFIG</var>
<var name="${value}">example-bgp-rib</var>
<status status="PASS" start="2026-04-17T03:23:41.078470" elapsed="0.001856"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-17T03:23:41.072025" elapsed="0.008336"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-17T03:23:41.080404" elapsed="0.000027"/>
</return>
<msg time="2026-04-17T03:23:41.080560" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'controller-config', 'BGP_NAME': 'example-bgp-peer', 'IP': '10.30.171.117', 'BGP_RIB_OPENCONFIG': 'example-bgp-rib'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-17T03:23:41.070889" elapsed="0.009696"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:41.070588" elapsed="0.010029"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.080790" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:41.080641" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:41.070569" elapsed="0.010294"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.081648" level="INFO">${final_text} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensi...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:41.081005" elapsed="0.000672"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-17T03:23:41.081724" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="PASS" start="2026-04-17T03:23:41.066920" elapsed="0.014924"/>
</kw>
<msg time="2026-04-17T03:23:41.081931" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:41.054004" elapsed="0.027979"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.094312" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.106537" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.118831" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.119028" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.119217" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.119587" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:41.119440" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:41.119424" elapsed="0.000270"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.119872" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.120047" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.120231" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-17T03:23:41.119396" elapsed="0.000887"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-17T03:23:41.119293" elapsed="0.001016"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.120457" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:41.120531" elapsed="0.000015"/>
</return>
<msg time="2026-04-17T03:23:41.120654" level="INFO">${uri} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensi...</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-17T03:23:41.049748" elapsed="0.070932"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.121784" level="INFO">rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:41.121536" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:41.127263" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:41.124074" elapsed="0.004847">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:41.121913" elapsed="0.007090">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.129205" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:41.129036" elapsed="0.000232"/>
</branch>
<status status="FAIL" start="2026-04-17T03:23:41.121892" elapsed="0.007399">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.129714" elapsed="0.000025"/>
</kw>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:41.129786" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="FAIL" start="2026-04-17T03:23:41.120947" elapsed="0.008963">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:41.129978" elapsed="0.000015"/>
</return>
<arg>${BGP_VARIABLES_FOLDER}${/}bgp_peer</arg>
<arg>mapping=${mapping}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="FAIL" start="2026-04-17T03:23:41.025776" elapsed="0.104296">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.131413" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:41.131080" elapsed="0.000375"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:23:41.130713" elapsed="0.000791"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.132336" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:41.131934" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:41.131916" elapsed="0.000506"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:41.132570" elapsed="0.000308"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.137791" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:41.137386" elapsed="0.000432"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:41.138057" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:41.137916" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:41.137897" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.138584" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:41.138289" elapsed="0.000321"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:23:41.139021" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Prefixcount_Delete_Bgp_Peer_Configuration</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.138766" elapsed="0.000281"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:23:41.139397" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:23:41.139223" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.139914" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:41.139575" elapsed="0.000366"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.140416" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:41.140110" elapsed="0.000333"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.141021" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:23:41.140597" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.141576" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:41.141286" elapsed="0.000338"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:23:41.137069" elapsed="0.004608"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:41.131723" elapsed="0.010002"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:23:41.130406" elapsed="0.011364"/>
</kw>
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<status status="FAIL" start="2026-04-17T03:23:40.965968" elapsed="0.175869">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_prefixcount_delete_bgp_peer_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:41.144362" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:23:41.168086" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:23:41.168330" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:41.144214" elapsed="0.024170"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:23:41.168489" elapsed="0.000070"/>
</return>
<msg time="2026-04-17T03:23:41.168832" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:23:41.143919" elapsed="0.024968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.169850" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:41.169267" elapsed="0.000676"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.171784" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:23:41.171950" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:23:41.171198" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:23:41.172424" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-17T03:23:41.172186" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:41.172144" elapsed="0.000451"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.172930" elapsed="0.000047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.173343" elapsed="0.000046"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.173720" elapsed="0.000042"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:23:41.170510" elapsed="0.003416"/>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:23:41.143363" elapsed="0.030676"/>
</kw>
<arg>KillPythonTool.Search_And_Kill_Remote_Python</arg>
<arg>'play\.py'</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:41.142816" elapsed="0.031352"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Sysstat_Statistics" owner="Utils">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:41.176362" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:41.176580" level="INFO">${current_connection} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:41.176080" elapsed="0.000558"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:41.178612" level="INFO">${odl_connection} = 28</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:41.177946" elapsed="0.000705"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.181045" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:23:41.181229" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:23:41.180668" elapsed="0.000598"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:41.181503" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:23:41.183289" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:23:41.910999" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:23:41 UTC 2026

  System load:  0.01               Processes:             120
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:21:34 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:23:41.182798" elapsed="0.728377"/>
</kw>
<msg time="2026-04-17T03:23:41.911257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:41.182263" elapsed="0.729083"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:23:41.180007" elapsed="0.731450"/>
</kw>
<msg time="2026-04-17T03:23:41.911509" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:41.179434" elapsed="0.732131"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:23:41.178919" elapsed="0.732721"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-17T03:23:41.911690" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.179 and return its identifier.</doc>
<status status="PASS" start="2026-04-17T03:23:41.177221" elapsed="0.734639"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:41.913317" level="INFO">sar -A -f /var/log/sa/sa*</msg>
<arg>sar -A -f /var/log/sa/sa*</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-17T03:23:41.912087" elapsed="0.001288"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:23:41.914905" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<msg time="2026-04-17T03:23:41.915010" level="INFO">${output} = [?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<var>${output}</var>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:23:41.913575" elapsed="0.001462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:41.915538" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:41.915217" elapsed="0.000369"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:41.915742" elapsed="0.000155"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:23:41.915938" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:41.919737" elapsed="0.000161"/>
</kw>
<msg time="2026-04-17T03:23:41.919945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:41.919026" elapsed="0.000982"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.920189" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:41.920355" elapsed="0.000019"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:41.916310" elapsed="0.004124"/>
</kw>
<doc>Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
that node was running. Used for debug purposes. Returns whole output of sysstat.</doc>
<status status="PASS" start="2026-04-17T03:23:41.175466" elapsed="0.745062"/>
</kw>
<arg>Utils.Get_Sysstat_Statistics</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:41.174512" elapsed="0.746064"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:41.920800" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:23:41.920723" elapsed="0.000230"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:23:41.921115" elapsed="0.000327"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:23:41.142532" elapsed="0.779014"/>
</kw>
<doc>BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used.

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 suite uses play.py as single iBGP peer.
The suite only looks at example-ipv4-topology, so RIB is not examined.

The suite consists of two halves, differing on which side initiates BGP connection.
State of "work is being done" is detected by increasing value of prefixes in topology.
The time for Wait_For_Stable_* cases to finish is the main performance metric.
After waiting for stability is done, full check on number of prefixes present is performed.

Brief description how to configure BGP peer can be found here:
https://wiki.opendaylight.org/view/BGP_LS_PCEP:User_Guide#BGP_Peer
http://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html#bgp-peering

TODO: Currently, if a bug causes prefix count to remain at zero,
affected test cases will wait for max time. Reconsider.
If zero is allowed as stable, higher period or repetitions would be required.

The prefix counting is quite heavyweight and may induce large variation in time.
Try the other version of the suite (singlepeer_changecount.robot) to get better precision.</doc>
<status status="FAIL" start="2026-04-17T03:21:34.348468" elapsed="127.573116"/>
</suite>
<suite id="s1-s10" name="Singlepeer Changecount" source="/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot">
<kw name="Setup_Everything" type="SETUP">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.008489" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:42.004246" elapsed="0.004292"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:23:42.003981" elapsed="0.004619"/>
</kw>
<kw name="Setup_Karaf_Keywords" owner="KarafKeywords">
<kw name="ClusterManagement_Setup" owner="ClusterManagement">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.013599" level="INFO">${already_done} = False</msg>
<var>${already_done}</var>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>False</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:23:42.009720" elapsed="0.003908"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:42.013831" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:42.013718" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:42.013690" elapsed="0.000212"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.014477" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:42.014063" elapsed="0.000459"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.015006" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-17T03:23:42.014692" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-17T03:23:42.015575" elapsed="0.000281"/>
</kw>
<msg time="2026-04-17T03:23:42.015954" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:42.015999" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:42.015228" elapsed="0.000794"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.016620" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:42.016238" elapsed="0.000408"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.017710" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:42.017436" elapsed="0.000301"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.018199" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:42.017890" elapsed="0.000338"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.018683" level="INFO">&amp;{index_to_ip_mapping} = { }</msg>
<var>&amp;{index_to_ip_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.018392" elapsed="0.000318"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.021946" elapsed="0.000235"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.022668" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:42.022345" elapsed="0.000350"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.022852" elapsed="0.000230"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.023893" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:23:42.023602" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-17T03:23:42.023964" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:23:42.024133" level="INFO">${session_alias} = ClusterManagement__session_1</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:42.023303" elapsed="0.000856"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:42.024885" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854412bb650&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>${session_alias}</arg>
<arg>http://${member_ip}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=${http_timeout}</arg>
<arg>max_retries=${http_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:23:42.024437" elapsed="0.000575"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.025214" elapsed="0.000214"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-17T03:23:42.021333" elapsed="0.004155"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:42.021131" elapsed="0.004401"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-17T03:23:42.018769" elapsed="0.006796"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.026166" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:42.025736" elapsed="0.000520"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.026834" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.179'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:42.026429" elapsed="0.000448"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.027466" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:42.027045" elapsed="0.000466"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-17T03:23:42.016912" elapsed="0.010656"/>
</kw>
<arg>http_timeout=${http_timeout}</arg>
<doc>Detect repeated call, or detect number of members and initialize derived suite variables.
Http sessions are created with parameters to not waste time when ODL is no accepting connections properly.</doc>
<status status="PASS" start="2026-04-17T03:23:42.009355" elapsed="0.018267"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:42.027800" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:42.027687" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:42.027668" elapsed="0.000198"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.030985" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:42.030612" elapsed="0.000400"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.031488" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:42.031190" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:42.031558" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:23:42.031711" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:42.030282" elapsed="0.001453"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:42.032731" level="INFO">${member_ip} = 10.30.171.179</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.032469" elapsed="0.000288"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:42.033510" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:42.033610" level="INFO">${current_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:42.033348" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:42.037183" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:42.036599" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:42.036578" elapsed="0.000727"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:42.037993" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:42.038240" level="INFO">${current_ssh_connection} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:42.037557" elapsed="0.000734"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.039229" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.179" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:42.038560" elapsed="0.000779"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:42.040528" level="INFO">${conn_id} = 1</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.039612" elapsed="0.000967"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.042355" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:23:42.042530" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:23:42.041978" elapsed="0.000594"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:42.042912" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:23:42.044707" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:23:42.399355" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:23:41 UTC 2026

  System load:  0.01               Processes:             120
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:23:41 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:23:42.044329" elapsed="0.355192"/>
</kw>
<msg time="2026-04-17T03:23:42.399608" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:42.043777" elapsed="0.355996"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:23:42.041018" elapsed="0.358912"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:42.400935" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-17T03:23:42.413777" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-17T03:23:42.414186" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:23:42.414418" level="INFO">${stderr} = iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission ...</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:42.400378" elapsed="0.014147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:42.415240" elapsed="0.001078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.419142" level="INFO">iptables v1.8.7 (nf_tables): unknown option "--dport"
Try `iptables -h' or 'iptables --help' for more information.
iptables-save v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:42.417692" elapsed="0.001747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:23:42.420646" elapsed="0.000145"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:42.419909" elapsed="0.001101"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:42.419841" elapsed="0.001315"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-17T03:23:42.422148" elapsed="0.000145"/>
</return>
<status status="PASS" start="2026-04-17T03:23:42.421463" elapsed="0.000980"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:42.421410" elapsed="0.001111"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-17T03:23:42.422636" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:42.429708" elapsed="0.000889"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.431253" elapsed="0.000548"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:42.432354" elapsed="0.000423"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:42.423660" elapsed="0.009254"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-17T03:23:42.035632" elapsed="0.397696"/>
</kw>
<msg time="2026-04-17T03:23:42.433438" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:42.034806" elapsed="0.398732"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:23:42.034323" elapsed="0.399369"/>
</kw>
<msg time="2026-04-17T03:23:42.433772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:42.033798" elapsed="0.400066"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:42.437314" elapsed="0.000315"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.437801" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:42.438219" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:42.434404" elapsed="0.003972"/>
</kw>
<msg time="2026-04-17T03:23:42.438471" level="INFO">${output} = </msg>
<var>${output}</var>
<arg>Utils.Run_Command_On_Controller</arg>
<arg>${member_ip}</arg>
<arg>${command}</arg>
<doc>Store current connection index, run keyword returning its result, restore connection in teardown.
Note that in order to avoid "got positional argument after named arguments", it is safer to use positional (not named) arguments on call.</doc>
<status status="PASS" start="2026-04-17T03:23:42.032977" elapsed="0.405519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.438955" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:42.438686" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:23:42.439039" elapsed="0.000030"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-17T03:23:42.032110" elapsed="0.407103"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:42.031912" elapsed="0.407339"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:42.031786" elapsed="0.407503"/>
</for>
<arg>iptables -I INPUT -p tcp --dport ${KARAF_SHELL_PORT} -j ACCEPT; iptables-save</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-17T03:23:42.028089" elapsed="0.411258"/>
</kw>
<kw name="Comment" owner="BuiltIn">
<arg>First connections to Karaf console may fail, so WUKS is used. TODO: Track as a Bug.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-17T03:23:42.439510" elapsed="0.000237"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:42.453889" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:42.453776" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:42.453755" elapsed="0.000203"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:42.454277" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:42.454380" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:42.454135" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.454819" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:42.454562" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:42.455280" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:42.455018" elapsed="0.000305"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:42.456070" level="FAIL">Dictionary does not contain key '1'.</msg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="FAIL" start="2026-04-17T03:23:42.455847" elapsed="0.000352">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-17T03:23:42.456309" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:42.456354" level="INFO">${old_connection_index} = Dictionary does not contain key '1'.</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:42.455485" elapsed="0.000891"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:42.456679" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:42.456450" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:42.456432" elapsed="0.000358"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:42.457748" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.457463" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:42.457823" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:23:42.457975" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:42.456997" elapsed="0.001002"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.458184" elapsed="0.000439"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:42.458908" level="INFO">index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:42.459008" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:42.458801" elapsed="0.000234"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.459227" elapsed="0.002545"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:42.462304" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:42.463346" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:42.461953" elapsed="0.001830">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:42.466883" elapsed="0.000354"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:42.467406" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:42.467730" elapsed="0.000097"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:42.464620" elapsed="0.003258"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:42.464070" elapsed="0.003855"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:42.453486" elapsed="0.014524">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:43.488643" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:43.488496" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:43.488467" elapsed="0.000283"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:43.489154" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:43.489275" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:43.488957" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:43.489782" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:43.489471" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:43.490265" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:43.489990" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:43.490954" elapsed="0.000212"/>
</kw>
<msg time="2026-04-17T03:23:43.491270" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:43.491318" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:43.490483" elapsed="0.000858"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:43.492208" elapsed="0.000145"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:43.493120" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:43.492894" elapsed="0.000748">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:43.492526" elapsed="0.001181"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:43.494238" elapsed="0.000103"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:43.493884" elapsed="0.000503"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:43.491657" elapsed="0.002773"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:43.491420" elapsed="0.003059"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:43.491400" elapsed="0.003104"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:43.495415" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:43.495037" elapsed="0.000465"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:43.495611" elapsed="0.000071"/>
</return>
<msg time="2026-04-17T03:23:43.496047" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:43.494733" elapsed="0.001483"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:43.496761" elapsed="0.000772"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:43.497984" level="INFO">index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:43.498122" level="INFO">${karaf_connection_object} = index=6
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:43.497846" elapsed="0.000308"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:43.498345" elapsed="0.003057"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:43.501862" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:43.503151" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:43.501578" elapsed="0.001994">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:43.506861" elapsed="0.000493"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:43.507567" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:43.507887" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:43.504510" elapsed="0.003531"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:43.503912" elapsed="0.004175"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:43.488041" elapsed="0.020157">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:44.530405" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:44.530259" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:44.530231" elapsed="0.000266"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:44.530890" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:44.531012" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:44.530695" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:44.531538" level="INFO">{1: 6}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:44.531222" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:44.531999" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:44.531747" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:44.532647" elapsed="0.000190"/>
</kw>
<msg time="2026-04-17T03:23:44.532938" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:44.532985" level="INFO">${old_connection_index} = 6</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:44.532243" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:44.533859" elapsed="0.000140"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:44.534698" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:44.534524" elapsed="0.000697">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:44.534187" elapsed="0.001099"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:44.535803" elapsed="0.000101"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:44.535469" elapsed="0.000481"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:44.533333" elapsed="0.002662"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:44.533086" elapsed="0.003045"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:44.533067" elapsed="0.003091"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:44.536950" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:44.536675" elapsed="0.000302"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:44.537027" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:23:44.537202" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:44.536387" elapsed="0.000840"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:44.537391" elapsed="0.000410"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:44.538084" level="INFO">index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:44.538203" level="INFO">${karaf_connection_object} = index=8
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_erro...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:44.537978" elapsed="0.000252"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:44.538386" elapsed="0.002487"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:44.541321" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:44.542630" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:44.541043" elapsed="0.001979">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:44.546174" elapsed="0.000360"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:44.546706" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:44.547006" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:44.543888" elapsed="0.003299"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:44.543355" elapsed="0.003879"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:44.529832" elapsed="0.017484">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.563113" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:45.562936" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.562907" elapsed="0.000334"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.563656" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:45.563808" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.563470" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.564352" level="INFO">{1: 8}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:45.564009" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.564818" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:45.564563" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.565539" elapsed="0.000199"/>
</kw>
<msg time="2026-04-17T03:23:45.565841" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:45.565889" level="INFO">${old_connection_index} = 8</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.565058" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:45.566824" elapsed="0.000152"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.567913" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.567648" elapsed="0.000826">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.567171" elapsed="0.001383"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.569117" elapsed="0.000106"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.568757" elapsed="0.000514"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:45.566258" elapsed="0.003056"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:45.565993" elapsed="0.003374"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.565972" elapsed="0.003422"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:45.570227" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.569931" elapsed="0.000324"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:45.570306" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:23:45.570469" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:45.569628" elapsed="0.000865"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.570657" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.571390" level="INFO">index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:45.571495" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.571278" elapsed="0.000243"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.571679" elapsed="0.002566"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.574692" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:45.575916" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.574422" elapsed="0.001920">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:45.579496" elapsed="0.000412"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.580084" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.580418" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:45.577227" elapsed="0.003346"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:45.576653" elapsed="0.003966"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.562493" elapsed="0.018211">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:45.580802" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:23:42.440550" elapsed="3.140347">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:42.440165" elapsed="3.140800"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:42.439987" elapsed="3.141023"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-17T03:23:42.439811" elapsed="3.141237"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-17T03:23:42.008902" elapsed="3.572237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Test_Suite_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.583902" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:45.583782" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.583760" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.588803" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:45.588692" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.588673" elapsed="0.000200"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.589943" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:45.589503" elapsed="0.000467"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.590468" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:45.590165" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:45.590540" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:23:45.590700" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:45.589146" elapsed="0.001578"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.596302" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:45.596191" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.596172" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.597588" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:45.597462" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.597443" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:45.598143" level="INFO">${karaf_connection_index} = 10</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.597808" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.598563" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:45.598335" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.599759" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.599286" elapsed="0.001307">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:45.600790" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:45.600853" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.598750" elapsed="0.002134"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.602514" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.601934" elapsed="0.001669">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:45.603832" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:45.603895" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.601145" elapsed="0.002782"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.605046" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.604394" elapsed="0.000747">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:45.604035" elapsed="0.001242">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:45.604007" elapsed="0.001304">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:45.605494" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:45.605724" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:45.605579" elapsed="0.000290"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:45.605563" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.605982" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:45.608028" elapsed="0.000466"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.608843" elapsed="0.000318"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.609519" elapsed="0.000255"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:45.607221" elapsed="0.002644"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:45.606311" elapsed="0.003693"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.597176" elapsed="0.013050">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</status>
</kw>
<msg time="2026-04-17T03:23:45.610341" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:45.610387" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.596528" elapsed="0.013883"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.610610" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:45.610494" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.610472" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.611492" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:45.611387" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.611368" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.612134" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:45.612243" level="INFO">${current_ssh_connection_object} = index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.611764" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.612746" level="INFO">{1: 10}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:45.612464" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.613220" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:45.612951" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.613832" elapsed="0.000456"/>
</kw>
<msg time="2026-04-17T03:23:45.614395" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:45.614442" level="INFO">${old_connection_index} = 10</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.613444" elapsed="0.001020"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:45.615587" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.617225" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.616932" elapsed="0.000800">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.616156" elapsed="0.001667"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.619115" elapsed="0.000195"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.618075" elapsed="0.001306"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:45.614774" elapsed="0.004689"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:45.614542" elapsed="0.004973"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.614523" elapsed="0.005018"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:45.620581" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.620116" elapsed="0.000497"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:45.620673" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:23:45.620902" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:45.619785" elapsed="0.001143"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.621108" elapsed="0.000428"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.621830" level="INFO">index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:45.621930" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.621712" elapsed="0.000244"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.622138" elapsed="0.002435"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.625024" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:45.626404" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.624751" elapsed="0.002174">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:45.631269" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.632283" elapsed="0.000428"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:45.632960" elapsed="0.000238"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:45.628461" elapsed="0.004831"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:45.627348" elapsed="0.005994"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.611131" elapsed="0.022308">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:45.633846" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:45.633925" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:45.595876" elapsed="0.038162">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:45.634174" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:45.634225" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.591122" elapsed="0.043128"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:45.634612" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:45.634335" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:45.634314" elapsed="0.000375"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:45.590957" elapsed="0.043757"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:45.590779" elapsed="0.043968"/>
</for>
<arg>Starting suite ${SUITE_SOURCE}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:45.588387" elapsed="0.046419"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-17T03:23:45.581814" elapsed="0.053051"/>
</kw>
<arg>KarafKeywords.Log_Test_Suite_Start_To_Controller_Karaf</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:45.581311" elapsed="0.053597"/>
</kw>
<doc>Prepare both FailFast and Karaf logging, log that the caller suite has started.
This keyword is to be used in suite setup, and without it the other keywords may not work properly.</doc>
<status status="PASS" start="2026-04-17T03:23:42.003667" elapsed="3.631293"/>
</kw>
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:45.639433" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7854401ce610&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:23:45.638998" elapsed="0.000579"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:23:45.638535" elapsed="0.001234"/>
</kw>
<kw name="CC_Setup" owner="ChangeCounter">
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:45.644384" level="INFO">Creating Session using : alias=default, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543ac3c610&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:23:45.643997" elapsed="0.000501"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-17T03:23:45.643517" elapsed="0.001048"/>
</kw>
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:45.645568" elapsed="0.000043"/>
</return>
<msg time="2026-04-17T03:23:45.645809" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:45.645350" elapsed="0.000485"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.650598" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:45.646026" elapsed="0.004627"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:45.651084" elapsed="0.000050"/>
</return>
<msg time="2026-04-17T03:23:45.651444" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:45.650875" elapsed="0.000597"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.656471" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:45.651698" elapsed="0.004827"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:23:45.645046" elapsed="0.011557"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:23:45.644761" elapsed="0.011890"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:45.657122" elapsed="0.000036"/>
</return>
<msg time="2026-04-17T03:23:45.657340" level="INFO">${counter} = ['Get_Change_Count', [], {}]</msg>
<var>${counter}</var>
<arg>Get_Change_Count</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:45.656898" elapsed="0.000467"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.661845" level="INFO">${ChangeCounter__getter} = ['Get_Change_Count', [], {}]</msg>
<arg>${ChangeCounter__getter}</arg>
<arg>${counter}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:45.657538" elapsed="0.004355"/>
</kw>
<doc>Initialize dependency libraries.</doc>
<status status="PASS" start="2026-04-17T03:23:45.639995" elapsed="0.021957"/>
</kw>
<kw name="PC_Setup" owner="PrefixCounting">
<kw name="WU_Setup" owner="WaitUtils">
<kw name="SC_Setup" owner="ScalarClosures">
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:45.663215" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:23:45.663431" level="INFO">${sc_fail} = ['BuiltIn.Fail', [], {}]</msg>
<var>${sc_fail}</var>
<arg>BuiltIn.Fail</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:45.663017" elapsed="0.000439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.664051" level="INFO">${ScalarClosures__fail} = ['BuiltIn.Fail', [], {}]</msg>
<arg>${ScalarClosures__fail}</arg>
<arg>${sc_fail}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:45.663638" elapsed="0.000469"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:23:45.664484" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:23:45.664692" level="INFO">${sc_identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<var>${sc_identity}</var>
<arg>BuiltIn.Set_Variable</arg>
<arg>placeholder</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:23:45.664296" elapsed="0.000421"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.665282" level="INFO">${ScalarClosures__identity} = ['BuiltIn.Set_Variable', ['placeholder'], {}]</msg>
<arg>${ScalarClosures__identity}</arg>
<arg>${sc_identity}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:45.664885" elapsed="0.000439"/>
</kw>
<doc>Resource setup. Create closures and assign them to suite variables.</doc>
<status status="PASS" start="2026-04-17T03:23:45.662713" elapsed="0.002668"/>
</kw>
<doc>Call dependency setup. Perhaps needed.</doc>
<status status="PASS" start="2026-04-17T03:23:45.662431" elapsed="0.002995"/>
</kw>
<doc>Call dependency setups and construct suite variables.</doc>
<status status="PASS" start="2026-04-17T03:23:45.662171" elapsed="0.003299"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:45.665991" level="INFO">Creating Session using : alias=operational, url=http://10.30.171.179:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78543ab80e90&gt;, timeout=125, proxies=None, verify=False,                     debug=0 </msg>
<arg>operational</arg>
<arg>http://${ODL_SYSTEM_IP}:${RESTCONFPORT}</arg>
<arg>auth=${AUTH}</arg>
<arg>timeout=125</arg>
<arg>max_retries=0</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-17T03:23:45.665625" elapsed="0.000516"/>
</kw>
<kw name="Set Default Configuration" owner="SSHLibrary">
<arg>prompt=${TOOLS_SYSTEM_PROMPT}</arg>
<doc>Update the default `configuration`.</doc>
<status status="PASS" start="2026-04-17T03:23:45.666314" elapsed="0.000183"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${TOOLS_SYSTEM_IP}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:45.666657" elapsed="0.000196"/>
</kw>
<kw name="Flexible_Mininet_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:23:45.668672" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:23:45.668748" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:23:45.668395" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:45.668935" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:23:45.670147" level="INFO">Logging into '10.30.171.117:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:23:46.364223" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:23:45 UTC 2026

  System load:  0.0                Processes:             106
  Usage of /:   19.3% of 38.58GB   Users logged in:       0
  Memory usage: 4%                 IPv4 address for ens3: 10.30.171.117
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

9 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:21:38 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:23:45.669816" elapsed="0.694553"/>
</kw>
<msg time="2026-04-17T03:23:46.364460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:45.669458" elapsed="0.695082"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:23:45.667931" elapsed="0.696730"/>
</kw>
<msg time="2026-04-17T03:23:46.364717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:45.667496" elapsed="0.697271"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Mininet machine.</doc>
<status status="PASS" start="2026-04-17T03:23:45.667142" elapsed="0.697725"/>
</kw>
<kw name="Require_Python" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.366886" level="INFO">Executing command 'python3 --help'.</msg>
<msg time="2026-04-17T03:23:46.379489" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:23:46.379761" level="INFO">${stdout} = usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_ins...</msg>
<msg time="2026-04-17T03:23:46.379860" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:23:46.379951" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:46.366593" elapsed="0.013408"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.382026" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:23:46.381327" elapsed="0.000826"/>
</kw>
<msg time="2026-04-17T03:23:46.382352" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:23:46.382453" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.380480" elapsed="0.002025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.383844" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:46.382878" elapsed="0.001021"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.384726" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:46.384081" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.384031" elapsed="0.000839"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:23:46.385132" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-17T03:23:46.384961" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.384936" elapsed="0.000344"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.385435" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.385373" elapsed="0.000129"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:46.385346" elapsed="0.000192"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.385771" elapsed="0.000033"/>
</kw>
<msg time="2026-04-17T03:23:46.385999" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>python3 --help</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:23:46.366019" elapsed="0.020018"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:23:46.386300" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-17T03:23:46.386163" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.386134" elapsed="0.000381"/>
</if>
<kw name="Fatal Error" owner="BuiltIn">
<arg>Python 3 is not installed!</arg>
<doc>Stops the whole test execution.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.386741" elapsed="0.000031"/>
</kw>
<doc>Verify current SSH connection leads to machine with python working. Fatal fail otherwise.</doc>
<status status="PASS" start="2026-04-17T03:23:46.365374" elapsed="0.021479"/>
</kw>
<kw name="Assure_Library_Ipaddr" owner="SSHKeywords">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.388807" level="INFO">Executing command 'bash -c 'cd "." &amp;&amp; python -c "import ipaddr"''.</msg>
<msg time="2026-04-17T03:23:46.448049" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-17T03:23:46.448458" level="INFO">${stdout} = </msg>
<msg time="2026-04-17T03:23:46.448566" level="INFO">${stderr} = </msg>
<msg time="2026-04-17T03:23:46.448666" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:23:46.388532" elapsed="0.060191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.450928" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:23:46.450267" elapsed="0.000791"/>
</kw>
<msg time="2026-04-17T03:23:46.451368" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-17T03:23:46.451477" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.449296" elapsed="0.002236"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.452975" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:46.451958" elapsed="0.001074"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.454060" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:46.453248" elapsed="0.001007"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.453199" elapsed="0.001165"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="PASS" start="2026-04-17T03:23:46.454767" elapsed="0.000633"/>
</return>
<status status="PASS" start="2026-04-17T03:23:46.454534" elapsed="0.000950"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.454496" elapsed="0.001043"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.455746" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.455666" elapsed="0.000172"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:46.455631" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.456252" elapsed="0.000048"/>
</kw>
<msg time="2026-04-17T03:23:46.456523" level="INFO">${passed} = True</msg>
<var>${passed}</var>
<arg>bash -c 'cd "${target_dir}" &amp;&amp; python -c "import ipaddr"'</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-17T03:23:46.387953" elapsed="0.068607"/>
</kw>
<if>
<branch type="IF" condition="${passed}">
<return>
<status status="PASS" start="2026-04-17T03:23:46.456800" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-17T03:23:46.456664" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.456638" elapsed="0.000275"/>
</if>
<kw name="Put File" owner="SSHLibrary">
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPCEP/ipaddr.py</arg>
<arg>${target_dir}/</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.457166" elapsed="0.000032"/>
</kw>
<arg>target_dir=.</arg>
<doc>Tests whether ipaddr module is present on ssh-connected machine, Puts ipaddr.py to target_dir if not.</doc>
<status status="PASS" start="2026-04-17T03:23:46.387257" elapsed="0.070031"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.494024" level="INFO">[chan 3] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-17T03:23:46.507204" level="INFO">'/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py' -&gt; '/home/jenkins//play.py'</msg>
<arg>/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../../tools/fastbgp/play.py</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-17T03:23:46.457515" elapsed="0.049847"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.508553" level="INFO">${timeout} = 560.0</msg>
<var>${timeout}</var>
<arg>${TEST_DURATION_MULTIPLIER_CHANGE_COUNT_SINGLE} * (${COUNT_CHANGE_COUNT_SINGLE} * 9.0 / 10000 + 20)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:46.507780" elapsed="0.000814"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.514690" level="INFO">${bgp_filling_timeout} = 560.0</msg>
<arg>${bgp_filling_timeout}</arg>
<arg>${timeout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:46.508859" elapsed="0.005882"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.521597" level="INFO">${bgp_emptying_timeout} = 420.0</msg>
<arg>${bgp_emptying_timeout}</arg>
<arg>${bgp_filling_timeout*3.0/4}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:23:46.514919" elapsed="0.006727"/>
</kw>
<doc>Setup imported resources, SSH-login to tools system,
create HTTP session, put Python tool to tools system.</doc>
<status status="PASS" start="2026-04-17T03:23:42.003368" elapsed="4.518350"/>
</kw>
<test id="s1-s10-t1" name="Check_For_Empty_Ipv4_Topology_Before_Talking" line="88">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.526158" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:46.525889" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.525862" elapsed="0.000475"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:23:46.525675" elapsed="0.000718"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.527566" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.527450" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.527428" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.532710" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.532560" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.532534" elapsed="0.000270"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.534298" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:23:46.533702" elapsed="0.000637"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.535022" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:23:46.534580" elapsed="0.000479"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:23:46.535150" elapsed="0.000053"/>
</return>
<msg time="2026-04-17T03:23:46.535409" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:23:46.533156" elapsed="0.002290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.544566" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.544450" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.544430" elapsed="0.000215"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.545913" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.545803" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.545784" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:46.546484" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:46.546165" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.546919" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:46.546694" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.547839" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.547546" elapsed="0.000987">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:46.548736" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:23:46.548782" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.547152" elapsed="0.001653"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.549605" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.549351" elapsed="0.000943">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:23:46.550481" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:23:46.550527" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.548979" elapsed="0.001571"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.551564" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.550892" elapsed="0.000740">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:23:46.550633" elapsed="0.001078">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:23:46.550609" elapsed="0.001136">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.551917" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.552171" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:46.552006" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:46.551988" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.552346" elapsed="0.000017"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:46.554961" elapsed="0.000198"/>
</kw>
<msg time="2026-04-17T03:23:46.555228" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:46.553910" elapsed="0.001510"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.555716" elapsed="0.000075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.556057" elapsed="0.000195"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:46.553242" elapsed="0.003132"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:46.552657" elapsed="0.003785"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.545464" elapsed="0.011073">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</status>
</kw>
<msg time="2026-04-17T03:23:46.556656" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:46.556710" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_Before_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.544811" elapsed="0.011926"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.556940" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.556823" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.556800" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.558138" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.558009" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.557989" elapsed="0.000217"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.558508" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:46.558613" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:46.558372" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.559169" level="INFO">{1: 13}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:46.558819" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.559681" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:23:46.559417" elapsed="0.000311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:46.560304" elapsed="0.000277"/>
</kw>
<msg time="2026-04-17T03:23:46.560694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:23:46.560743" level="INFO">${old_connection_index} = 13</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.559899" elapsed="0.000867"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:46.561613" elapsed="0.000206"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.562927" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.562497" elapsed="0.001480">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.561996" elapsed="0.002081"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:23:46.564737" elapsed="0.000278"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.564272" elapsed="0.000842"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:23:46.561076" elapsed="0.004085"/>
</kw>
<status status="PASS" start="2026-04-17T03:23:46.560845" elapsed="0.004365"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.560826" elapsed="0.004410"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:23:46.566135" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:23:46.565804" elapsed="0.000417"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:23:46.566274" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:23:46.566439" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:23:46.565460" elapsed="0.001005"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:23:46.566626" elapsed="0.000433"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.567421" level="INFO">index=16
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:23:46.567524" level="INFO">${karaf_connection_object} = index=16
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:23:46.567300" elapsed="0.000250"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:23:46.567706" elapsed="0.002569"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:23:46.570739" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:23:46.571751" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.570449" elapsed="0.001737">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:23:46.586919" elapsed="0.000584"/>
</kw>
<msg time="2026-04-17T03:23:46.587603" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:23:46.585441" elapsed="0.002330"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.587941" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.588127" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:23:46.573237" elapsed="0.014978"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:23:46.572511" elapsed="0.015753"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.557464" elapsed="0.030892">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.588775" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.588854" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.543933" elapsed="0.045041">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:23:46.589108" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:46.589157" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.535998" elapsed="0.053183"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.589541" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:46.589271" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.589249" elapsed="0.000374"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:23:46.535782" elapsed="0.053876"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:23:46.535530" elapsed="0.054164"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:23:46.532135" elapsed="0.057624"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:46.527047" elapsed="0.062774"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.526558" elapsed="0.063311"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:23:46.523329" elapsed="0.066597"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:46.597143" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.594108" elapsed="0.004758">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.599290" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:46.598991" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:46.598963" elapsed="0.000416"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.599416" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.593478" elapsed="0.006066">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.599755" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.599828" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.592929" elapsed="0.007004">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:46.600062" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:46.600128" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:46.592434" elapsed="0.007722"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:46.600329" elapsed="0.038808"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:46.640271" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:46.640133" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:46.640088" elapsed="0.000257"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:46.640888" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.640511" elapsed="0.000455">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:46.639670" elapsed="0.001411">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:46.641162" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.591929" elapsed="0.049338">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:46.641446" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.591371" elapsed="0.050189">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.590733" elapsed="0.050998">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:47.651052" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:47.647272" elapsed="0.006506">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:47.654246" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:47.653951" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:47.653914" elapsed="0.000449"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:47.654412" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:47.646503" elapsed="0.008083">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:47.654907" elapsed="0.000039"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:47.655025" elapsed="0.000026"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:47.645711" elapsed="0.009495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:47.655379" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:47.655444" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:47.644911" elapsed="0.010571"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:47.655719" elapsed="0.034949"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:47.691802" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:47.691664" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:47.691638" elapsed="0.000235"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:47.692483" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:47.692043" elapsed="0.000540">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:47.691213" elapsed="0.001493">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:47.692767" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:47.644187" elapsed="0.048678">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:47.693208" elapsed="0.000031"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:47.643347" elapsed="0.049991">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:47.642613" elapsed="0.050824">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:48.704163" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:48.700523" elapsed="0.006187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:48.707049" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:48.706845" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:48.706813" elapsed="0.000339"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:48.707190" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:48.699879" elapsed="0.007432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:48.707497" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:48.707565" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:48.699076" elapsed="0.008590">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:48.707788" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:48.707835" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:48.698177" elapsed="0.009683"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:48.708029" elapsed="0.036913"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:48.746373" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:48.746149" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:48.746115" elapsed="0.000350"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:48.747271" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:48.746688" elapsed="0.000665">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:48.745561" elapsed="0.001914">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:48.747614" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:48.696892" elapsed="0.050827">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:48.747901" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:48.695505" elapsed="0.052508">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:48.694439" elapsed="0.053719">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:49.760784" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:49.756620" elapsed="0.006305">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:49.763277" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:49.763052" elapsed="0.000283"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:49.763023" elapsed="0.000341"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:49.763402" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:49.755367" elapsed="0.008157">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:49.763724" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:49.763795" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:49.753990" elapsed="0.009905">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:49.764016" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:49.764062" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:49.752670" elapsed="0.011416"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:49.764276" elapsed="0.032845"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:49.798422" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:49.798279" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:49.798251" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:49.799107" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:49.798698" elapsed="0.000507">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:49.797732" elapsed="0.001747">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:49.799550" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:49.751549" elapsed="0.048106">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:49.799835" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:49.750165" elapsed="0.049781">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:49.749015" elapsed="0.051028">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:50.808240" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:50.804780" elapsed="0.005955">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:50.811138" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:50.810879" elapsed="0.000331"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:50.810848" elapsed="0.000394"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:50.811286" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:50.804231" elapsed="0.007198">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:50.811663" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:50.811749" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:50.803522" elapsed="0.008353">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:50.812018" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:50.812076" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:50.802811" elapsed="0.009314"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:50.812346" elapsed="0.040455"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:50.854186" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:50.854015" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:50.853987" elapsed="0.000275"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:50.854847" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:50.854445" elapsed="0.000483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:50.853522" elapsed="0.001537">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:50.855139" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:50.802175" elapsed="0.053069">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:50.855454" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:50.801432" elapsed="0.054150">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:50.800729" elapsed="0.054953">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:51.868005" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:51.864255" elapsed="0.008243">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:51.873323" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:51.872832" elapsed="0.000622"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:51.872770" elapsed="0.000739"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:51.873585" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:51.863089" elapsed="0.010676">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:51.874038" elapsed="0.000228"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:51.874334" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:51.861730" elapsed="0.012748">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:51.874803" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:51.874872" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:51.860427" elapsed="0.014480"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:51.875167" elapsed="0.041526"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:51.917758" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:51.917621" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:51.917596" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:51.918381" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:51.917992" elapsed="0.000464">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:51.917196" elapsed="0.001375">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:51.918632" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:51.859214" elapsed="0.059517">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:51.918912" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:51.857850" elapsed="0.061173">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:51.856821" elapsed="0.062321">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:52.931015" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:52.926852" elapsed="0.006145">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:52.933316" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:52.933130" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:52.933089" elapsed="0.000307"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:52.933432" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:52.925844" elapsed="0.007702">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:52.933724" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:52.933858" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:52.924625" elapsed="0.009334">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:52.934074" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:52.934134" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:52.923396" elapsed="0.010764"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:52.934327" elapsed="0.030682"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:52.966036" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:52.965901" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:52.965877" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:52.966654" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:52.966290" elapsed="0.000436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:52.965477" elapsed="0.001363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:52.966901" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:52.922285" elapsed="0.044712">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:52.967191" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:52.921003" elapsed="0.046299">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:52.919991" elapsed="0.047408">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:53.978321" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:53.974735" elapsed="0.006127">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:53.981189" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:53.980982" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:53.980956" elapsed="0.000379"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:53.981376" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:53.974123" elapsed="0.007373">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:53.981681" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:53.981751" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:53.973336" elapsed="0.008517">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:53.981971" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:53.982018" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:53.972497" elapsed="0.009546"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:53.982227" elapsed="0.031138"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:54.014386" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:54.014249" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:54.014225" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:54.014987" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:54.014621" elapsed="0.000441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:54.013813" elapsed="0.001382">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:54.015257" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:53.971179" elapsed="0.044176">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:54.015532" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:53.969763" elapsed="0.045878">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:53.968649" elapsed="0.047101">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:55.029134" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:55.025320" elapsed="0.005753">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:55.031549" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:55.031333" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:55.031303" elapsed="0.000332"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:55.031673" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:55.024275" elapsed="0.007526">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:55.032003" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:55.032074" elapsed="0.000031"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:55.022720" elapsed="0.009477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:55.032322" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:55.032369" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:55.021288" elapsed="0.011107"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:55.032568" elapsed="0.038319"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:55.072535" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:55.072328" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:55.072289" elapsed="0.000352"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:55.073514" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:55.072931" elapsed="0.000693">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:55.071628" elapsed="0.002174">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:55.073908" elapsed="0.000027"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:55.019945" elapsed="0.054117">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:55.074354" elapsed="0.000034"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:55.017880" elapsed="0.056644">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:55.016625" elapsed="0.058045">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:56.087065" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:56.082901" elapsed="0.006736">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:56.090071" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:56.089808" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:56.089770" elapsed="0.000439"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:56.090260" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:56.081815" elapsed="0.008609">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:56.090680" elapsed="0.000076"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:56.090828" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:56.080564" elapsed="0.010409">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:56.091167" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:56.091235" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:56.079348" elapsed="0.011923"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:56.091515" elapsed="0.030698"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:56.123257" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:56.123119" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:56.123079" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:56.123867" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:56.123492" elapsed="0.000449">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:56.122665" elapsed="0.001394">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:56.124135" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:56.078129" elapsed="0.046107">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:56.124414" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:56.076596" elapsed="0.047928">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:56.075612" elapsed="0.049080">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:57.134899" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:57.130889" elapsed="0.006069">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:57.137335" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:57.137111" elapsed="0.000285"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:57.137066" elapsed="0.000359"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:57.137465" elapsed="0.000031"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:57.130173" elapsed="0.007468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:57.137838" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:57.137909" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:57.129268" elapsed="0.008744">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:57.138159" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:57.138207" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:57.128430" elapsed="0.009830"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:57.138434" elapsed="0.036183"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:57.175715" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:57.175574" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:57.175548" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:57.176364" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:57.175965" elapsed="0.000475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:57.175125" elapsed="0.001447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:57.176634" elapsed="0.000029"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:57.127493" elapsed="0.049254">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:57.177001" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:57.126395" elapsed="0.050746">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:57.125449" elapsed="0.051793">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:58.185797" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:58.182247" elapsed="0.006235">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:58.188928" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:58.188645" elapsed="0.000365"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:58.188609" elapsed="0.000436"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:58.189117" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:58.181558" elapsed="0.007724">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:58.189531" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:58.189616" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:58.180789" elapsed="0.009004">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:58.189961" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:58.190021" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:58.180036" elapsed="0.010016"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:58.190294" elapsed="0.040147"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:58.231487" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:58.231349" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:58.231323" elapsed="0.000235"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:58.232111" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:58.231722" elapsed="0.000467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:58.230894" elapsed="0.001411">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:58.232438" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:58.179345" elapsed="0.053195">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:58.232719" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:58.178601" elapsed="0.054227">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:58.177932" elapsed="0.054990">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:23:59.244468" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:23:59.241048" elapsed="0.005528">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:59.246902" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:23:59.246706" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:23:59.246678" elapsed="0.000306"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:23:59.247023" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:23:59.239982" elapsed="0.007187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:59.247357" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:23:59.247425" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:23:59.238738" elapsed="0.008787">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:23:59.247654" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:23:59.247717" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:23:59.237496" elapsed="0.010257"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:23:59.248009" elapsed="0.034636"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:23:59.284060" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:23:59.283854" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-17T03:23:59.283812" elapsed="0.000379"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:23:59.285119" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:23:59.284498" elapsed="0.000814">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:23:59.283253" elapsed="0.002383">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:23:59.285766" elapsed="0.000037"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:23:59.236233" elapsed="0.049697">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:23:59.286201" elapsed="0.000033"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:23:59.234889" elapsed="0.051466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:23:59.233899" elapsed="0.052597">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:00.297981" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:00.293425" elapsed="0.006554">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:00.300325" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:00.300122" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:00.300078" elapsed="0.000339"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:00.300464" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:00.292486" elapsed="0.008108">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:00.300830" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:00.300918" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:00.291333" elapsed="0.009692">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:00.301164" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:00.301212" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:00.290340" elapsed="0.010896"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:00.301411" elapsed="0.045746"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:00.348250" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:00.348105" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:00.348063" elapsed="0.000262"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:00.349132" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:00.348498" elapsed="0.000718">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:00.347641" elapsed="0.001695">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:00.349400" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:00.289399" elapsed="0.060100">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:00.349680" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:00.288173" elapsed="0.061619">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:00.287353" elapsed="0.062536">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:01.362036" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:01.358328" elapsed="0.005790">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:01.364560" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:01.364305" elapsed="0.000320"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:01.364270" elapsed="0.000383"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:01.364692" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:01.357486" elapsed="0.007337">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:01.365023" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:01.365110" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:01.356037" elapsed="0.009178">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:01.365349" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:01.365401" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:01.354782" elapsed="0.010652"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:01.365679" elapsed="0.037215"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:01.403968" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:01.403828" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:01.403804" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:01.404617" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:01.404242" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:01.403402" elapsed="0.001406">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:01.404870" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:01.353501" elapsed="0.051470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:01.405165" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:01.351970" elapsed="0.053307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:01.350750" elapsed="0.054623">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:02.419052" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:02.413882" elapsed="0.007130">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:02.421533" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:02.421334" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:02.421307" elapsed="0.000309"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:02.421652" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:02.412752" elapsed="0.009018">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:02.421964" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:02.422053" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:02.411343" elapsed="0.010857">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:02.422397" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:02.422451" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:02.409943" elapsed="0.012537"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:02.422671" elapsed="0.032473"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:02.456241" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:02.456082" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:02.456056" elapsed="0.000326"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:02.456936" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:02.456555" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:02.455603" elapsed="0.001556">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:02.457223" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:02.408663" elapsed="0.048659">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:02.457500" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:02.407177" elapsed="0.050434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:02.406207" elapsed="0.051500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:03.468300" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:03.463758" elapsed="0.006504">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:03.470615" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:03.470394" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:03.470364" elapsed="0.000334"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:03.470736" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:03.462524" elapsed="0.008333">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:03.471135" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:03.471225" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:03.461176" elapsed="0.010154">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:03.471458" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:03.471505" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:03.459949" elapsed="0.011580"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:03.471698" elapsed="0.040840"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:03.513895" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:03.513722" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:03.513688" elapsed="0.000306"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:03.514745" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:03.514245" elapsed="0.000603">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:03.513171" elapsed="0.001833">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:03.515085" elapsed="0.000042"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:03.459431" elapsed="0.055850">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:03.515529" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:03.458792" elapsed="0.056888">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:03.458304" elapsed="0.057508">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:04.528832" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:04.523948" elapsed="0.006809">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:04.531162" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:04.530944" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:04.530918" elapsed="0.000328"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:04.531284" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:04.522789" elapsed="0.008626">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:04.531602" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:04.531680" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:04.521527" elapsed="0.010256">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:04.531902" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:04.531948" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:04.520317" elapsed="0.011655"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:04.532155" elapsed="0.034697"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:04.567893" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:04.567756" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:04.567731" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:04.568518" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:04.568147" elapsed="0.000446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:04.567336" elapsed="0.001372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:04.568771" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:04.519171" elapsed="0.049700">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:04.569054" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:04.517809" elapsed="0.051374">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:04.516833" elapsed="0.052447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:05.582842" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:05.577741" elapsed="0.007049">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:05.585114" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:05.584908" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:05.584883" elapsed="0.000315"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:05.585235" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:05.576539" elapsed="0.008813">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:05.585537" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:05.585606" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:05.575221" elapsed="0.010486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:05.585824" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:05.585871" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:05.573830" elapsed="0.012066"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:05.586063" elapsed="0.029761"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:05.616823" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:05.616690" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:05.616666" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:05.617444" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:05.617060" elapsed="0.000458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:05.616278" elapsed="0.001354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:05.617692" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:05.572592" elapsed="0.045197">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:05.617966" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:05.571229" elapsed="0.046846">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:05.570141" elapsed="0.048095">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:06.629155" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:06.625486" elapsed="0.006419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:06.632381" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:06.632079" elapsed="0.000385"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:06.632042" elapsed="0.000463"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:06.632560" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:06.624804" elapsed="0.007933">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:06.633084" elapsed="0.000062"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:06.633221" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:06.623931" elapsed="0.009446">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:06.633611" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:06.633684" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:06.623120" elapsed="0.010641"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:06.634050" elapsed="0.036675"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:06.671826" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:06.671690" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:06.671665" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:06.672454" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:06.672063" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:06.671269" elapsed="0.001379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:06.672710" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:06.622339" elapsed="0.050471">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:06.673010" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:06.620822" elapsed="0.052329">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:06.619436" elapsed="0.053884">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:07.685071" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:07.680871" elapsed="0.006927">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:07.688251" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:07.687961" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:07.687928" elapsed="0.000444"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:07.688423" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:07.679885" elapsed="0.008705">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:07.688856" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:07.688954" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:07.678678" elapsed="0.010450">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:07.689314" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:07.689382" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:07.677515" elapsed="0.011905"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:07.689667" elapsed="0.031093"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:07.721777" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:07.721643" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:07.721619" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:07.722442" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:07.722013" elapsed="0.000501">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:07.721231" elapsed="0.001398">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:07.722689" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:07.676369" elapsed="0.046417">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:07.723032" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:07.675142" elapsed="0.048019">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:07.674217" elapsed="0.049040">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:08.732011" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:08.728522" elapsed="0.006187">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:08.735232" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:08.734896" elapsed="0.000416"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:08.734853" elapsed="0.000496"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:08.735402" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:08.727889" elapsed="0.007687">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:08.735848" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:08.735942" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:08.727141" elapsed="0.008939">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:08.736279" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:08.736344" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:08.726365" elapsed="0.010013"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:08.736613" elapsed="0.046075"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:08.784054" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:08.783879" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:08.783846" elapsed="0.000336"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:08.784942" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:08.784420" elapsed="0.000624">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:08.783319" elapsed="0.001905">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:08.785395" elapsed="0.000028"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:08.725632" elapsed="0.059912">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:08.785802" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:08.724828" elapsed="0.061131">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:08.723925" elapsed="0.062194">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:09.799067" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:09.794427" elapsed="0.006695">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:09.801436" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:09.801243" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:09.801217" elapsed="0.000301"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:09.801555" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:09.793283" elapsed="0.008393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:09.801857" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:09.801938" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:09.791962" elapsed="0.010081">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:09.802179" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:09.802226" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:09.790696" elapsed="0.011555"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:09.802421" elapsed="0.033240"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:09.837212" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:09.836989" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:09.836953" elapsed="0.000338"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:09.837868" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:09.837468" elapsed="0.000482">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:09.836363" elapsed="0.001808">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:09.838240" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:09.789567" elapsed="0.048780">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:09.838564" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:09.788222" elapsed="0.050462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:09.787020" elapsed="0.051761">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:10.847170" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:10.843525" elapsed="0.006176">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:10.850136" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:10.849860" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:10.849826" elapsed="0.000418"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:10.850292" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:10.842960" elapsed="0.007484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:10.850678" elapsed="0.000028"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:10.850764" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:10.842273" elapsed="0.008619">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:10.851037" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:10.851107" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:10.841553" elapsed="0.009586"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:10.851357" elapsed="0.048511"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:10.901490" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:10.901323" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:10.901289" elapsed="0.000296"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:10.902322" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:10.901810" elapsed="0.000610">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:10.900731" elapsed="0.001838">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:10.902645" elapsed="0.000021"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:10.840887" elapsed="0.061885">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:10.903000" elapsed="0.000030"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:10.840171" elapsed="0.062991">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:10.839482" elapsed="0.063824">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:11.915754" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:11.911861" elapsed="0.006749">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:11.919118" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:11.918783" elapsed="0.000491"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:11.918746" elapsed="0.000579"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:11.919382" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:11.910711" elapsed="0.008845">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:11.919832" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:11.919934" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:11.909361" elapsed="0.010774">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:11.920356" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:11.920403" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:11.908013" elapsed="0.012414"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:11.920625" elapsed="0.031435"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:11.953081" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:11.952947" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:11.952922" elapsed="0.000277"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:11.953770" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:11.953378" elapsed="0.000473">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:11.952529" elapsed="0.001448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:11.954041" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:11.906693" elapsed="0.047468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:11.954343" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:11.905290" elapsed="0.049164">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:11.904234" elapsed="0.050318">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:12.963358" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:12.959844" elapsed="0.006090">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:12.966381" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:12.966119" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:12.966063" elapsed="0.000430"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:12.966545" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:12.959220" elapsed="0.007509">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:12.967024" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:12.967232" elapsed="0.000030"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:12.958312" elapsed="0.009080">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:12.967556" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:12.967620" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:12.957502" elapsed="0.010152"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:12.967891" elapsed="0.034133"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:13.003158" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:13.002995" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:13.002966" elapsed="0.000262"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:13.003773" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:13.003398" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:13.002502" elapsed="0.001462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:13.004023" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:12.956761" elapsed="0.047376">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:13.004316" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:12.955910" elapsed="0.048518">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:12.955274" elapsed="0.049248">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:14.017478" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:14.013157" elapsed="0.006600">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:14.020216" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:14.019919" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:14.019882" elapsed="0.000500"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:14.020426" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:14.011982" elapsed="0.008581">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:14.020772" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:14.020840" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:14.010730" elapsed="0.010214">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:14.021115" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:14.021166" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:14.009384" elapsed="0.011806"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:14.021364" elapsed="0.037670"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:14.060209" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:14.060051" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:14.060024" elapsed="0.000257"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:14.060877" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:14.060462" elapsed="0.000495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:14.059589" elapsed="0.001488">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:14.061156" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:14.008067" elapsed="0.053189">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:14.061436" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:14.006712" elapsed="0.054837">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:14.005426" elapsed="0.056220">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:15.072533" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:15.068811" elapsed="0.006472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:15.075799" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:15.075538" elapsed="0.000343"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:15.075502" elapsed="0.000416"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:15.075970" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:15.068158" elapsed="0.008016">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:15.076440" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:15.076537" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:15.067359" elapsed="0.009326">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:15.076849" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:15.076915" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:15.066517" elapsed="0.010435"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:15.077238" elapsed="0.031668"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:15.110009" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:15.109871" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:15.109844" elapsed="0.000236"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:15.110687" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:15.110264" elapsed="0.000503">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:15.109402" elapsed="0.001501">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:15.110970" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:15.065257" elapsed="0.045816">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:15.111288" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:15.063799" elapsed="0.047619">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:15.062679" elapsed="0.048867">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:16.123783" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:16.120183" elapsed="0.005668">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:16.126212" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:16.125981" elapsed="0.000291"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:16.125952" elapsed="0.000347"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:16.126338" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:16.118859" elapsed="0.007602">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:16.126649" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:16.126716" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:16.117585" elapsed="0.009230">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:16.126972" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:16.127021" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:16.116262" elapsed="0.010783"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:16.127236" elapsed="0.036773"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:16.165046" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:16.164911" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:16.164887" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:16.165694" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:16.165318" elapsed="0.000454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:16.164491" elapsed="0.001396">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:16.165947" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:16.115014" elapsed="0.051032">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:16.166266" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:16.113578" elapsed="0.052803">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:16.112534" elapsed="0.054065">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:17.174919" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:17.171439" elapsed="0.006031">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:17.177968" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:17.177648" elapsed="0.000394"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:17.177610" elapsed="0.000465"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:17.178144" elapsed="0.000022"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:17.170848" elapsed="0.007458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:17.178559" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:17.178646" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:17.170137" elapsed="0.008638">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:17.178947" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:17.179006" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:17.169411" elapsed="0.009626"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:17.179276" elapsed="0.040398"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:17.220982" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:17.220802" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:17.220767" elapsed="0.000294"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:17.221720" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:17.221262" elapsed="0.000592">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:17.220271" elapsed="0.001737">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:17.222121" elapsed="0.000026"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:17.168756" elapsed="0.053511">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:17.222623" elapsed="0.000033"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:17.167972" elapsed="0.054813">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:17.167350" elapsed="0.055567">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:18.234552" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:18.231630" elapsed="0.004867">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:18.236840" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:18.236636" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:18.236607" elapsed="0.000316"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:18.236963" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:18.230566" elapsed="0.006520">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:18.237301" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:18.237373" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:18.229205" elapsed="0.008287">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:18.237615" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:18.237663" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:18.227821" elapsed="0.009868"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:18.237862" elapsed="0.033104"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:18.272063" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:18.271902" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:18.271877" elapsed="0.000274"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:18.272709" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:18.272321" elapsed="0.000483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:18.271462" elapsed="0.001478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:18.273112" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:18.226501" elapsed="0.046721">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:18.273404" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:18.225026" elapsed="0.048491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:18.223951" elapsed="0.049662">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:19.286134" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:19.282340" elapsed="0.005661">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:19.288342" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:19.288138" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:19.288111" elapsed="0.000315"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:19.288462" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:19.281599" elapsed="0.006980">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:19.288763" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:19.288832" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:19.280070" elapsed="0.008864">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:19.289053" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:19.289118" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:19.278608" elapsed="0.010536"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:19.289312" elapsed="0.031161"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:19.321551" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:19.321414" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:19.321389" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:19.322194" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:19.321791" elapsed="0.000483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:19.320955" elapsed="0.001519">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:19.322541" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:19.277195" elapsed="0.045445">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:19.322820" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:19.275564" elapsed="0.047367">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:19.274533" elapsed="0.048513">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:20.332724" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:20.328163" elapsed="0.009238">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:20.338027" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:20.337631" elapsed="0.000516"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:20.337573" elapsed="0.000619"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:20.338251" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:20.327384" elapsed="0.011059">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:20.338837" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:20.338941" elapsed="0.000036"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:20.326515" elapsed="0.012613">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:20.339395" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:20.339493" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:20.325696" elapsed="0.013851"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:20.339941" elapsed="0.036407"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:20.377516" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:20.377377" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:20.377352" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:20.378245" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:20.377753" elapsed="0.000588">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:20.376914" elapsed="0.001563">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:20.378544" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:20.325153" elapsed="0.053501">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:20.378848" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:20.324513" elapsed="0.054453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:20.323844" elapsed="0.055231">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:21.387013" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:21.383726" elapsed="0.005806">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:21.389915" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:21.389676" elapsed="0.000309"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:21.389646" elapsed="0.000370"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:21.390061" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:21.383170" elapsed="0.007054">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:21.390458" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:21.390542" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:21.382477" elapsed="0.008191">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:21.390811" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:21.390867" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:21.381776" elapsed="0.009121"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:21.391198" elapsed="0.036134"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:21.428341" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:21.428207" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:21.428182" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:21.428934" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:21.428572" elapsed="0.000437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:21.427776" elapsed="0.001365">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:21.429204" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:21.381143" elapsed="0.048160">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:21.429483" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:21.380413" elapsed="0.049186">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:21.379741" elapsed="0.049956">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:22.442668" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:22.438142" elapsed="0.006503">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:22.444970" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:22.444779" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:22.444751" elapsed="0.000302"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:22.445107" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:22.437000" elapsed="0.008233">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:22.445415" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:22.445483" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:22.435657" elapsed="0.009925">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:22.445784" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:22.445832" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:22.434352" elapsed="0.011505"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:22.446028" elapsed="0.030410"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:22.477454" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:22.477321" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:22.477297" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:22.478060" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:22.477686" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:22.476886" elapsed="0.001385">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:22.478332" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:22.433017" elapsed="0.045413">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:22.478609" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:22.431482" elapsed="0.047243">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:22.430458" elapsed="0.048406">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:23.491289" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:23.486195" elapsed="0.007772">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:23.494460" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:23.494166" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:23.494128" elapsed="0.000455"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:23.494633" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:23.485042" elapsed="0.009762">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:23.495172" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:23.495275" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:23.483738" elapsed="0.011698">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:23.495610" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:23.495686" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:23.482367" elapsed="0.013356"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:23.495968" elapsed="0.041842"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:23.538863" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:23.538727" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:23.538702" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:23.539527" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:23.539145" elapsed="0.000460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:23.538293" elapsed="0.001433">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:23.539788" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:23.481244" elapsed="0.058644">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:23.540065" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:23.480326" elapsed="0.059866">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:23.479570" elapsed="0.060719">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:24.551623" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:24.548181" elapsed="0.006140">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:24.554830" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:24.554568" elapsed="0.000341"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:24.554533" elapsed="0.000412"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:24.554995" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:24.547470" elapsed="0.007754">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:24.555480" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:24.555576" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:24.546169" elapsed="0.009546">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:24.555882" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:24.555946" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:24.544895" elapsed="0.011085"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:24.556233" elapsed="0.036048"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:24.593621" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:24.593444" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:24.593414" elapsed="0.000305"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:24.594515" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:24.593946" elapsed="0.000676">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:24.592891" elapsed="0.001885">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:24.594858" elapsed="0.000024"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:24.543748" elapsed="0.051247">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:24.595256" elapsed="0.000031"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:24.542416" elapsed="0.052990">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:24.541384" elapsed="0.054160">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:25.608088" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:25.603971" elapsed="0.007228">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:25.611772" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:25.611434" elapsed="0.000424"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:25.611384" elapsed="0.000510"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:25.611947" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:25.603202" elapsed="0.008945">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:25.612443" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:25.612545" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:25.602227" elapsed="0.010468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:25.612948" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:25.613062" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:25.600923" elapsed="0.012221"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:25.613392" elapsed="0.044782"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:25.659584" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:25.659406" elapsed="0.000247"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:25.659371" elapsed="0.000316"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:25.660526" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:25.659937" elapsed="0.000700">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:25.658795" elapsed="0.002008">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:25.660899" elapsed="0.000026"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:25.599490" elapsed="0.061565">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:25.661348" elapsed="0.000033"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:25.597797" elapsed="0.063708">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:25.596493" elapsed="0.065146">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:26.672171" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:26.668420" elapsed="0.006547">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:26.675456" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:26.675169" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:26.675127" elapsed="0.000455"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:26.675635" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:26.667742" elapsed="0.008069">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:26.676087" elapsed="0.000056"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:26.676211" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:26.666895" elapsed="0.009467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:26.676541" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:26.676609" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:26.666058" elapsed="0.010587"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:26.676899" elapsed="0.041685"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:26.719708" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:26.719559" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:26.719534" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:26.720371" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:26.719950" elapsed="0.000504">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:26.719085" elapsed="0.001540">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:26.720692" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:26.664955" elapsed="0.055839">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:26.721002" elapsed="0.000028"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:26.663667" elapsed="0.057484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:26.662635" elapsed="0.058708">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:27.734044" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:27.730350" elapsed="0.005766">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:27.736487" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:27.736260" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:27.736226" elapsed="0.000347"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:27.736613" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:27.729140" elapsed="0.007629">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:27.736995" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:27.737068" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:27.727516" elapsed="0.009676">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:27.737328" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:27.737375" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:27.725902" elapsed="0.011501"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:27.737595" elapsed="0.037220"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:27.775998" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:27.775854" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:27.775825" elapsed="0.000251"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:27.776688" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:27.776267" elapsed="0.000502">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:27.775347" elapsed="0.001547">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:27.776957" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:27.724696" elapsed="0.052362">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:27.777328" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:27.723350" elapsed="0.054110">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:27.722209" elapsed="0.055367">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:28.790235" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:28.786337" elapsed="0.006006">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:28.792765" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:28.792504" elapsed="0.000327"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:28.792471" elapsed="0.000391"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:28.792903" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:28.785195" elapsed="0.007843">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:28.793262" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:28.793332" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:28.783754" elapsed="0.009689">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:28.793593" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:28.793642" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:28.782307" elapsed="0.011359"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:28.793839" elapsed="0.038041"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:28.832965" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:28.832824" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:28.832798" elapsed="0.000237"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:28.833600" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:28.833222" elapsed="0.000454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:28.832395" elapsed="0.001396">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:28.833931" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:28.780985" elapsed="0.053050">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:28.834236" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:28.779603" elapsed="0.054748">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:28.778523" elapsed="0.055927">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:29.847368" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:29.842414" elapsed="0.006898">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:29.849628" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:29.849437" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:29.849410" elapsed="0.000300"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:29.849747" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:29.841352" elapsed="0.008514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:29.850047" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:29.850131" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:29.840074" elapsed="0.010156">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:29.850349" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:29.850394" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:29.838863" elapsed="0.011556"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:29.850584" elapsed="0.033465"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:29.885155" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:29.884995" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:29.884969" elapsed="0.000260"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:29.885782" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:29.885399" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:29.884513" elapsed="0.001544">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:29.886137" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:29.837721" elapsed="0.048520">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:29.886422" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:29.836421" elapsed="0.050115">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:29.835402" elapsed="0.051256">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:30.898670" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:30.894400" elapsed="0.006907">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:30.901721" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:30.901469" elapsed="0.000330"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:30.901435" elapsed="0.000399"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:30.901885" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:30.893399" elapsed="0.008645">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:30.902321" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:30.902416" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:30.892165" elapsed="0.010391">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:30.902714" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:30.902778" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:30.890919" elapsed="0.011894"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:30.903046" elapsed="0.032203"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:30.936353" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:30.936220" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:30.936195" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:30.936941" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:30.936583" elapsed="0.000430">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:30.935786" elapsed="0.001358">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:30.937206" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:30.889780" elapsed="0.047525">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:30.937483" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:30.888526" elapsed="0.049069">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:30.887525" elapsed="0.050165">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:31.950503" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:31.946190" elapsed="0.006481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:31.953035" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:31.952812" elapsed="0.000298"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:31.952780" elapsed="0.000360"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:31.953180" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:31.945035" elapsed="0.008268">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:31.953493" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:31.953560" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:31.943551" elapsed="0.010109">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:31.953845" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:31.953892" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:31.942300" elapsed="0.011617"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:31.954103" elapsed="0.039829"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:31.995149" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:31.994970" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:31.994944" elapsed="0.000284"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:31.995895" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:31.995420" elapsed="0.000565">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:31.994483" elapsed="0.001636">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:31.996182" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:31.941071" elapsed="0.055210">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:31.996460" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:31.939661" elapsed="0.056908">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:31.938619" elapsed="0.058044">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:33.005366" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:33.001819" elapsed="0.006105">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:33.008362" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:33.008085" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:33.008051" elapsed="0.000424"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:33.008525" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:33.001129" elapsed="0.007555">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:33.008971" elapsed="0.000036"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:33.009165" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:33.000310" elapsed="0.009002">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:33.009474" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:33.009539" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:32.999539" elapsed="0.010034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:33.009807" elapsed="0.040182"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:33.051307" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:33.050966" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:33.050940" elapsed="0.000440"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:33.051939" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:33.051552" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:33.050528" elapsed="0.001626">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:33.052217" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:32.998808" elapsed="0.053507">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:33.052494" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:32.997998" elapsed="0.054630">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:32.997359" elapsed="0.055366">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:34.061872" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:34.058035" elapsed="0.006746">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:34.065278" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:34.064965" elapsed="0.000399"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:34.064922" elapsed="0.000568"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:34.065559" elapsed="0.000028"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:34.057386" elapsed="0.008352">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:34.066004" elapsed="0.000039"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:34.066135" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:34.056596" elapsed="0.009694">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:34.066461" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:34.066529" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:34.055754" elapsed="0.010813"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:34.066841" elapsed="0.045625"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:34.113575" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:34.113433" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:34.113407" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:34.114221" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:34.113819" elapsed="0.000481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:34.112951" elapsed="0.001476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:34.114491" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:34.054992" elapsed="0.059597">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:34.114768" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:34.054176" elapsed="0.060701">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:34.053450" elapsed="0.061523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:35.125909" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:35.122522" elapsed="0.005999">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:35.129012" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:35.128758" elapsed="0.000352"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:35.128723" elapsed="0.000426"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:35.129203" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:35.121779" elapsed="0.007613">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:35.129646" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:35.129740" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:35.120478" elapsed="0.009402">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:35.130038" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:35.130120" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:35.119271" elapsed="0.010885"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:35.130389" elapsed="0.030338"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:35.161751" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:35.161616" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:35.161590" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:35.162370" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:35.161985" elapsed="0.000458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:35.161203" elapsed="0.001354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:35.162617" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:35.118122" elapsed="0.044594">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:35.162892" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:35.116791" elapsed="0.046210">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:35.115812" elapsed="0.047298">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:36.173050" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:36.169315" elapsed="0.006496">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:36.176314" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:36.175978" elapsed="0.000438"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:36.175942" elapsed="0.000511"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:36.176504" elapsed="0.000068"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:36.168645" elapsed="0.008077">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:36.176981" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:36.177077" elapsed="0.000038"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:36.167762" elapsed="0.009467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:36.177365" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:36.177419" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:36.166963" elapsed="0.010481"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:36.177619" elapsed="0.038959"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:36.217627" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:36.217492" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:36.217466" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:36.218292" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:36.217886" elapsed="0.000484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:36.217048" elapsed="0.001439">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:36.218547" elapsed="0.000092"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:36.166204" elapsed="0.052522">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:36.218907" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:36.165228" elapsed="0.053791">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:36.164018" elapsed="0.055285">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:37.228212" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:37.223939" elapsed="0.006769">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:37.231109" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:37.230855" elapsed="0.000324"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:37.230823" elapsed="0.000389"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:37.231259" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:37.223392" elapsed="0.008012">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:37.231639" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:37.231730" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:37.222694" elapsed="0.009165">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:37.232003" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:37.232060" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:37.221978" elapsed="0.010129"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:37.232346" elapsed="0.038316"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:37.271897" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:37.271734" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:37.271703" elapsed="0.000282"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:37.272707" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:37.272255" elapsed="0.000545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:37.271233" elapsed="0.001708">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:37.273017" elapsed="0.000020"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:37.221343" elapsed="0.051813">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:37.273461" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:37.220603" elapsed="0.052997">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:37.219935" elapsed="0.053786">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:38.285049" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:38.281413" elapsed="0.006434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:38.288348" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:38.288033" elapsed="0.000401"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:38.287993" elapsed="0.000479"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:38.288526" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:38.280496" elapsed="0.008233">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:38.289005" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:38.289127" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:38.279275" elapsed="0.010004">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:38.289455" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:38.289523" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:38.278056" elapsed="0.011504"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:38.289810" elapsed="0.033740"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:38.324613" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:38.324452" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:38.324427" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:38.325277" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:38.324860" elapsed="0.000523">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:38.324015" elapsed="0.001534">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:38.325732" elapsed="0.000029"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:38.276917" elapsed="0.048977">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:38.326189" elapsed="0.000035"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:38.275622" elapsed="0.050738">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:38.274581" elapsed="0.051925">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:39.337056" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:39.332977" elapsed="0.006880">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:39.340390" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:39.340047" elapsed="0.000437"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:39.340002" elapsed="0.000528"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:39.340590" elapsed="0.000028"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:39.332301" elapsed="0.008481">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:39.341077" elapsed="0.000057"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:39.341208" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:39.331521" elapsed="0.009809">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:39.341538" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:39.341612" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:39.330633" elapsed="0.011016"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:39.341900" elapsed="0.048872"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:39.392265" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:39.392110" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:39.392056" elapsed="0.000286"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:39.392915" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:39.392520" elapsed="0.000474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:39.391463" elapsed="0.001837">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:39.393373" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:39.329751" elapsed="0.063727">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:39.393660" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:39.328378" elapsed="0.065393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:39.327463" elapsed="0.066413">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:40.404400" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:40.400766" elapsed="0.006383">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:40.407587" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:40.407318" elapsed="0.000350"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:40.407284" elapsed="0.000422"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:40.407759" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:40.400123" elapsed="0.007804">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:40.408216" elapsed="0.000036"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:40.408320" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:40.399306" elapsed="0.009162">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:40.408634" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:40.408701" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:40.398077" elapsed="0.010660"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:40.408984" elapsed="0.030558"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:40.440552" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:40.440416" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:40.440391" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:40.441257" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:40.440786" elapsed="0.000545">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:40.439985" elapsed="0.001460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:40.441506" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:40.396948" elapsed="0.044656">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:40.441781" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:40.395712" elapsed="0.046179">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:40.394758" elapsed="0.047228">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:41.454333" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:41.450365" elapsed="0.005870">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:41.456540" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:41.456354" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:41.456330" elapsed="0.000293"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:41.456660" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:41.449220" elapsed="0.007555">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:41.456955" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:41.457024" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:41.447878" elapsed="0.009264">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:41.457260" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:41.457306" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:41.446609" elapsed="0.010722"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:41.457554" elapsed="0.031299"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:41.489861" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:41.489727" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:41.489703" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:41.490474" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:41.490106" elapsed="0.000440">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:41.489316" elapsed="0.001343">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:41.490720" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:41.445325" elapsed="0.045494">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:41.490995" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:41.443968" elapsed="0.047152">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:41.442880" elapsed="0.048338">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:42.499289" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:42.495946" elapsed="0.005861">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:42.502211" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:42.501948" elapsed="0.000335"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:42.501919" elapsed="0.000396"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:42.502360" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:42.495397" elapsed="0.007107">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:42.502738" elapsed="0.000027"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:42.502823" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:42.494698" elapsed="0.008251">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:42.503179" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:42.503245" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:42.493985" elapsed="0.009292"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:42.503497" elapsed="0.034792"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:42.539305" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:42.539169" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:42.539144" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:42.539895" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:42.539535" elapsed="0.000432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:42.538737" elapsed="0.001342">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:42.540160" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:42.493293" elapsed="0.046968">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:42.540441" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:42.492536" elapsed="0.048015">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:42.491869" elapsed="0.048779">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:43.553547" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:43.548599" elapsed="0.007020">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:43.555966" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:43.555757" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:43.555727" elapsed="0.000326"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:43.556107" elapsed="0.000019"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:43.547556" elapsed="0.008679">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:43.556493" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:43.556564" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:43.546248" elapsed="0.010431">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:43.556807" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:43.556855" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:43.544945" elapsed="0.011936"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:43.557054" elapsed="0.033007"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:43.591265" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:43.591061" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:43.591027" elapsed="0.000334"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:43.592123" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:43.591624" elapsed="0.000596">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:43.590520" elapsed="0.001850">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:43.592451" elapsed="0.000023"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:43.543813" elapsed="0.048777">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:43.592841" elapsed="0.000032"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:43.542477" elapsed="0.050524">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:43.541473" elapsed="0.051701">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:44.605009" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:44.601438" elapsed="0.005598">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:44.607444" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:44.607247" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:44.607220" elapsed="0.000308"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:44.607566" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:44.600405" elapsed="0.007281">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:44.607872" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:44.607953" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:44.599057" elapsed="0.009003">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:44.608199" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:44.608247" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:44.597785" elapsed="0.010488"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:44.608446" elapsed="0.034175"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:44.643632" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:44.643500" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:44.643477" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:44.644289" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:44.643864" elapsed="0.000503">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:44.643067" elapsed="0.001417">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:44.644545" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:44.596500" elapsed="0.048144">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:44.644821" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:44.595185" elapsed="0.049748">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:44.594168" elapsed="0.050874">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:45.660325" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:45.655367" elapsed="0.006986">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:45.662702" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:45.662485" elapsed="0.000275"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:45.662456" elapsed="0.000330"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:45.662823" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:45.654002" elapsed="0.008942">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:45.663151" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:45.663221" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:45.652385" elapsed="0.010938">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:45.663448" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:45.663494" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:45.650666" elapsed="0.012853"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:45.663685" elapsed="0.038127"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:45.702883" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:45.702744" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:45.702717" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:45.703529" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:45.703145" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:45.702309" elapsed="0.001417">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:45.703789" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:45.648983" elapsed="0.054960">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:45.704148" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:45.647269" elapsed="0.056997">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:45.645992" elapsed="0.058372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:46.715954" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:46.712116" elapsed="0.006800">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:46.719448" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:46.719129" elapsed="0.000406"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:46.719065" elapsed="0.000509"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:46.719629" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:46.711436" elapsed="0.008372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:46.720109" elapsed="0.000035"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:46.720212" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:46.710163" elapsed="0.010197">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:46.720551" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:46.720618" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:46.708939" elapsed="0.011714"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:46.720901" elapsed="0.038491"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:46.760442" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:46.760307" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:46.760283" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:46.761053" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:46.760678" elapsed="0.000473">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:46.759863" elapsed="0.001404">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:46.761327" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:46.707803" elapsed="0.053622">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:46.761601" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:46.706530" elapsed="0.055182">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:46.705482" elapsed="0.056500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:47.774560" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:47.769837" elapsed="0.006810">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:47.777085" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:47.776801" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:47.776766" elapsed="0.000449"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:47.777265" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:47.768636" elapsed="0.008787">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:47.777636" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:47.777710" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:47.767437" elapsed="0.010374">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:47.777930" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:47.777976" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:47.766248" elapsed="0.011753"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:47.778187" elapsed="0.032391"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:47.811583" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:47.811445" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:47.811421" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:47.812192" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:47.811814" elapsed="0.000451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:47.811016" elapsed="0.001363">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:47.812441" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:47.765061" elapsed="0.047480">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:47.812828" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:47.763775" elapsed="0.049203">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:47.762798" elapsed="0.050277">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:48.821929" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:48.818337" elapsed="0.006354">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:48.825088" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:48.824844" elapsed="0.000323"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:48.824811" elapsed="0.000382"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:48.825232" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:48.817678" elapsed="0.007689">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:48.825569" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:48.825639" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:48.816890" elapsed="0.008850">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:48.825878" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:48.825926" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:48.816034" elapsed="0.009916"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:48.826192" elapsed="0.042990"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:48.870290" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:48.870148" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:48.870120" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:48.870948" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:48.870542" elapsed="0.000484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:48.869681" elapsed="0.001478">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:48.871303" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:48.815333" elapsed="0.056082">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:48.871612" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:48.814519" elapsed="0.057214">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:48.813783" elapsed="0.058051">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:49.883555" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:49.879179" elapsed="0.007884">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:49.887767" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:49.887321" elapsed="0.000544"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:49.887264" elapsed="0.000653"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:49.887976" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:49.878280" elapsed="0.009911">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:49.888481" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:49.888570" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:49.877442" elapsed="0.011228">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:49.888812" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:49.888858" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:49.876541" elapsed="0.012343"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:49.889052" elapsed="0.040071"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:49.930214" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:49.930052" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:49.930026" elapsed="0.000278"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:49.931026" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:49.930521" elapsed="0.000644">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:49.929621" elapsed="0.001806">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:49.931525" elapsed="0.000028"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:49.875262" elapsed="0.056430">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:49.931950" elapsed="0.000034"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:49.873894" elapsed="0.058248">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:49.872821" elapsed="0.059479">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:50.944709" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:50.940028" elapsed="0.006593">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:50.946949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:50.946749" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:50.946721" elapsed="0.000311"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:50.947069" elapsed="0.000056"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:50.938958" elapsed="0.008272">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:50.947415" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:50.947482" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:50.937751" elapsed="0.009830">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:50.947700" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:50.947745" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:50.936577" elapsed="0.011193"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:50.947935" elapsed="0.034138"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:50.983267" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:50.983054" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:50.983029" elapsed="0.000309"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:50.983884" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:50.983501" elapsed="0.000462">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:50.982627" elapsed="0.001454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:50.984159" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:50.935446" elapsed="0.048812">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:50.984438" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:50.934172" elapsed="0.050375">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:50.933219" elapsed="0.051423">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:51.996355" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:51.992123" elapsed="0.006812">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:51.999375" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:51.999116" elapsed="0.000338"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:51.999065" elapsed="0.000426"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:51.999543" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:51.991341" elapsed="0.008352">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:51.999907" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:51.999987" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:51.990313" elapsed="0.009811">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:52.000321" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:52.000368" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:51.989345" elapsed="0.011049"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:52.000564" elapsed="0.034053"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:52.035739" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:52.035591" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:52.035565" elapsed="0.000245"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:52.036385" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:52.035980" elapsed="0.000483">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:52.035155" elapsed="0.001424">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:52.036642" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:51.988436" elapsed="0.048332">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:52.036957" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:51.987328" elapsed="0.049743">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:51.985949" elapsed="0.051239">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:53.050315" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:53.045532" elapsed="0.006766">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:53.052644" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:53.052430" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:53.052403" elapsed="0.000328"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:53.052768" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:53.044418" elapsed="0.008475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:53.053081" elapsed="0.000042"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:53.053237" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:53.043054" elapsed="0.010291">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:53.053471" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:53.053519" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:53.041789" elapsed="0.011756"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:53.053722" elapsed="0.036911"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:53.091836" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:53.091653" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:53.091627" elapsed="0.000302"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:53.092565" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:53.092126" elapsed="0.000524">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:53.091134" elapsed="0.001643">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:53.092844" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:53.040560" elapsed="0.052395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:53.093158" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:53.039182" elapsed="0.054095">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:53.038073" elapsed="0.055328">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:54.105355" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:54.102083" elapsed="0.005223">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:54.107623" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:54.107426" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:54.107401" elapsed="0.000373"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:54.107816" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:54.100844" elapsed="0.007094">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:54.108148" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:54.108221" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:54.099552" elapsed="0.008775">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:54.108450" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:54.108500" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:54.098278" elapsed="0.010247"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:54.108718" elapsed="0.043584"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:54.153434" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:54.153289" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:54.153262" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:54.154125" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:54.153709" elapsed="0.000518">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:54.152818" elapsed="0.001565">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:54.154462" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:54.096931" elapsed="0.057663">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:54.154789" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:54.095452" elapsed="0.059453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:54.094357" elapsed="0.060646">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:55.168576" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:55.164289" elapsed="0.007205">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:55.172017" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:55.171743" elapsed="0.000382"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:55.171707" elapsed="0.000457"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:55.172218" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:55.163393" elapsed="0.008998">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:55.172670" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:55.172771" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:55.162038" elapsed="0.010883">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:55.173152" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:55.173225" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:55.160417" elapsed="0.012844"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:55.173560" elapsed="0.040760"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:55.215420" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:55.215270" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:55.215244" elapsed="0.000247"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:55.216037" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:55.215661" elapsed="0.000470">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:55.214814" elapsed="0.001434">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:55.216310" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:55.158880" elapsed="0.057558">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:55.216675" elapsed="0.000029"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:55.157244" elapsed="0.059575">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:55.155945" elapsed="0.060975">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:56.228147" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:56.224189" elapsed="0.006739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:56.231434" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:56.231135" elapsed="0.000385"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:56.231070" elapsed="0.000489"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:56.231615" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:56.223500" elapsed="0.008288">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:56.232066" elapsed="0.000054"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:56.232192" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:56.222655" elapsed="0.009716">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:56.232561" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:56.232682" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:56.221694" elapsed="0.011030"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:56.232995" elapsed="0.036651"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:56.270718" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:56.270572" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:56.270547" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:56.271336" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:56.270952" elapsed="0.000458">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:56.270135" elapsed="0.001388">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:56.271584" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:56.220361" elapsed="0.051322">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:56.271860" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:56.218890" elapsed="0.053080">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:56.217883" elapsed="0.054269">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:57.284943" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:57.280197" elapsed="0.006609">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:57.287128" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:57.286924" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:57.286899" elapsed="0.000313"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:57.287248" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:57.279162" elapsed="0.008203">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:57.287547" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:57.287614" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:57.277905" elapsed="0.009809">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:57.287830" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:57.287876" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:57.276667" elapsed="0.011234"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:57.288104" elapsed="0.032795"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:57.321918" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:57.321783" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:57.321759" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:57.322537" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:57.322169" elapsed="0.000444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:57.321364" elapsed="0.001362">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:57.322787" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:57.275299" elapsed="0.047591">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:57.323166" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:57.274010" elapsed="0.049271">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:57.273014" elapsed="0.050364">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:58.333806" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:58.329987" elapsed="0.006617">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:58.337088" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:58.336788" elapsed="0.000408"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:58.336749" elapsed="0.000484"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:58.337285" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:58.329341" elapsed="0.008119">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:58.337735" elapsed="0.000032"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:58.337835" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:58.328507" elapsed="0.009477">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:58.338185" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:58.338255" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:58.327619" elapsed="0.010672"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:58.338541" elapsed="0.038461"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:58.378066" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:58.377929" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:58.377903" elapsed="0.000251"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:58.378699" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:58.378323" elapsed="0.000453">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:58.377494" elapsed="0.001397">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:58.379026" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:58.326433" elapsed="0.052714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:58.379329" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:58.325181" elapsed="0.054260">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:58.324231" elapsed="0.055307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:24:59.392325" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:24:59.387505" elapsed="0.006987">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:59.394796" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:24:59.394609" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:24:59.394585" elapsed="0.000293"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:24:59.394913" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:24:59.386470" elapsed="0.008559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:59.395268" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:24:59.395339" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:24:59.385194" elapsed="0.010246">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:24:59.395558" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:24:59.395604" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:24:59.383952" elapsed="0.011677"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:24:59.395796" elapsed="0.029967"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:24:59.426807" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:24:59.426672" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:24:59.426647" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:24:59.427486" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:24:59.427041" elapsed="0.000520">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:24:59.426250" elapsed="0.001499">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:24:59.427813" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:24:59.382755" elapsed="0.045160">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:24:59.428116" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:24:59.381483" elapsed="0.046745">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:24:59.380483" elapsed="0.047843">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:00.437486" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:00.433914" elapsed="0.006419">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:00.440839" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:00.440528" elapsed="0.000393"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:00.440485" elapsed="0.000473"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:00.441011" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:00.433260" elapsed="0.007946">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:00.441500" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:00.441599" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:00.432448" elapsed="0.009295">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:00.441926" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:00.441991" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:00.431644" elapsed="0.010381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:00.442282" elapsed="0.039292"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:00.482649" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:00.482476" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:00.482452" elapsed="0.000265"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:00.483347" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:00.482883" elapsed="0.000540">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:00.482040" elapsed="0.001500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:00.483600" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:00.430891" elapsed="0.052807">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:00.483875" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:00.429986" elapsed="0.053998">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:00.429258" elapsed="0.054821">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:01.496651" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:01.491893" elapsed="0.006703">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:01.498930" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:01.498723" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:01.498694" elapsed="0.000318"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:01.499049" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:01.490834" elapsed="0.008352">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:01.499370" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:01.499437" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:01.489604" elapsed="0.009930">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:01.499654" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:01.499700" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:01.488428" elapsed="0.011296"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:01.499951" elapsed="0.034563"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:01.535536" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:01.535403" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:01.535378" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:01.536159" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:01.535766" elapsed="0.000469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:01.534968" elapsed="0.001378">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:01.536406" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:01.487305" elapsed="0.049199">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:01.536682" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:01.485928" elapsed="0.050864">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:01.484952" elapsed="0.051937">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:02.546181" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:02.542573" elapsed="0.006162">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:02.549255" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:02.548911" elapsed="0.000424"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:02.548875" elapsed="0.000497"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:02.549424" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:02.541924" elapsed="0.007699">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:02.549940" elapsed="0.000036"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:02.550041" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:02.540925" elapsed="0.009281">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:02.550454" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:02.550518" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:02.540145" elapsed="0.010406"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:02.550787" elapsed="0.044010"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:02.596117" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:02.595925" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:02.595896" elapsed="0.000321"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:02.596939" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:02.596455" elapsed="0.000576">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:02.595366" elapsed="0.001814">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:02.597262" elapsed="0.000024"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:02.539397" elapsed="0.057982">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:02.597627" elapsed="0.000034"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:02.538557" elapsed="0.059243">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:02.537822" elapsed="0.060113">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:03.605803" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:03.602572" elapsed="0.005714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:03.608666" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:03.608429" elapsed="0.000307"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:03.608398" elapsed="0.000370"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:03.608814" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:03.601994" elapsed="0.006965">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:03.609332" elapsed="0.000028"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:03.609418" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:03.601302" elapsed="0.008245">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:03.609688" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:03.609746" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:03.600567" elapsed="0.009211"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:03.609997" elapsed="0.035030"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:03.646113" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:03.645961" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:03.645936" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:03.646708" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:03.646344" elapsed="0.000437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:03.645545" elapsed="0.001349">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:03.646955" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:03.599912" elapsed="0.047143">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:03.647252" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:03.599205" elapsed="0.048158">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:03.598584" elapsed="0.048876">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:04.659307" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:04.655551" elapsed="0.005702">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:04.661652" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:04.661447" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:04.661419" elapsed="0.000316"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:04.661772" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:04.654342" elapsed="0.007551">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:04.662076" elapsed="0.000039"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:04.662164" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:04.653072" elapsed="0.009194">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:04.662386" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:04.662432" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:04.651843" elapsed="0.010613"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:04.662624" elapsed="0.035709"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:04.699408" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:04.699274" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:04.699248" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:04.700014" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:04.699645" elapsed="0.000464">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:04.698835" elapsed="0.001391">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:04.700287" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:04.650700" elapsed="0.049687">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:04.700580" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:04.649362" elapsed="0.051330">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:04.648345" elapsed="0.052442">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:05.714268" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:05.708781" elapsed="0.007475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:05.716590" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:05.716393" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:05.716366" elapsed="0.000308"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:05.716713" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:05.707592" elapsed="0.009239">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:05.717016" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:05.717085" elapsed="0.000033"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:05.706300" elapsed="0.010908">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:05.717335" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:05.717390" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:05.705045" elapsed="0.012371"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:05.717588" elapsed="0.038237"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:05.756921" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:05.756784" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:05.756758" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:05.757554" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:05.757184" elapsed="0.000444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:05.756348" elapsed="0.001396">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:05.757806" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:05.703852" elapsed="0.054054">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:05.758085" elapsed="0.000047"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:05.702588" elapsed="0.055635">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:05.701643" elapsed="0.056676">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:06.769509" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:06.765882" elapsed="0.006876">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:06.773480" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:06.773019" elapsed="0.000580"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:06.772959" elapsed="0.000691"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:06.773721" elapsed="0.000033"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:06.765196" elapsed="0.008762">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:06.774359" elapsed="0.000044"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:06.774492" elapsed="0.000032"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:06.764273" elapsed="0.010416">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:06.774931" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:06.775022" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:06.763008" elapsed="0.012063"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:06.775444" elapsed="0.047551"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:06.824359" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:06.824186" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:06.824152" elapsed="0.000293"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:06.825168" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:06.824665" elapsed="0.000602">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:06.823631" elapsed="0.001785">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:06.825497" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:06.761874" elapsed="0.063749">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:06.825849" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:06.760484" elapsed="0.065490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:06.759351" elapsed="0.066856">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:07.835128" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:07.831388" elapsed="0.006273">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:07.838113" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:07.837825" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:07.837788" elapsed="0.000452"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:07.838293" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:07.830746" elapsed="0.007714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:07.838709" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:07.838803" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:07.829984" elapsed="0.008956">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:07.839144" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:07.839210" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:07.829227" elapsed="0.010018"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:07.839479" elapsed="0.042538"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:07.883127" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:07.882937" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:07.882913" elapsed="0.000285"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:07.883744" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:07.883364" elapsed="0.000457">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:07.882515" elapsed="0.001423">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:07.883999" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:07.828518" elapsed="0.055594">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:07.884362" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:07.827727" elapsed="0.056751">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:07.826959" elapsed="0.057617">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:08.892752" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:08.889322" elapsed="0.006001">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:08.895742" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:08.895479" elapsed="0.000335"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:08.895445" elapsed="0.000403"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:08.895896" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:08.888749" elapsed="0.007306">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:08.896321" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:08.896405" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:08.888042" elapsed="0.008490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:08.896687" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:08.896743" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:08.887334" elapsed="0.009441"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:08.896991" elapsed="0.040588"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:08.938627" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:08.938470" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:08.938445" elapsed="0.000255"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:08.939258" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:08.938866" elapsed="0.000468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:08.938031" elapsed="0.001417">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:08.939583" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:08.886661" elapsed="0.053025">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:08.939867" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:08.885902" elapsed="0.054076">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:08.885288" elapsed="0.054788">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:09.951226" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:09.947564" elapsed="0.006368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:09.954406" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:09.954133" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:09.954078" elapsed="0.000445"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:09.954574" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:09.946758" elapsed="0.007982">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:09.955005" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:09.955123" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:09.945515" elapsed="0.009757">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:09.955437" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:09.955503" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:09.944349" elapsed="0.011190"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:09.955787" elapsed="0.034878"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:09.991971" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:09.991771" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:09.991733" elapsed="0.000343"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:09.992995" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:09.992363" elapsed="0.000807">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:09.991134" elapsed="0.002365">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:09.993619" elapsed="0.000037"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:09.943245" elapsed="0.050589">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:09.994269" elapsed="0.000048"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:09.941956" elapsed="0.052550">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:09.940966" elapsed="0.053742">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:11.006366" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:11.002740" elapsed="0.006246">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:11.009448" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:11.009175" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:11.009139" elapsed="0.000444"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:11.009634" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:11.001975" elapsed="0.007822">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:11.010052" elapsed="0.000030"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:11.010168" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:11.000600" elapsed="0.009713">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:11.010478" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:11.010541" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:10.999329" elapsed="0.011245"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:11.010804" elapsed="0.039473"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:11.051444" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:11.051304" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:11.051278" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:11.052117" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:11.051689" elapsed="0.000511">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:11.050839" elapsed="0.001486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:11.052389" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:10.998117" elapsed="0.054372">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:11.052670" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:10.996690" elapsed="0.056092">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:10.995663" elapsed="0.057217">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:12.063684" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:12.059830" elapsed="0.006325">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:12.066468" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:12.066278" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:12.066252" elapsed="0.000298"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:12.066587" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:12.059186" elapsed="0.007521">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:12.066900" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:12.066969" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:12.058299" elapsed="0.008768">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:12.067261" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:12.067309" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:12.057494" elapsed="0.009841"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:12.067504" elapsed="0.035979"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:12.104520" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:12.104362" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:12.104338" elapsed="0.000251"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:12.105152" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:12.104753" elapsed="0.000475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:12.103928" elapsed="0.001415">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:12.105403" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:12.056279" elapsed="0.049221">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:12.105675" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:12.054900" elapsed="0.050883">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:12.053845" elapsed="0.052034">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:13.116816" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:13.111431" elapsed="0.009072">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:13.121618" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:13.120784" elapsed="0.000905"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:13.120735" elapsed="0.000984"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:13.121771" elapsed="0.000020"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:13.110762" elapsed="0.011163">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:13.122156" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:13.122292" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:13.109904" elapsed="0.012496">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:13.122553" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:13.122601" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:13.109047" elapsed="0.013579"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:13.122815" elapsed="0.045079"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:13.169106" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:13.168946" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:13.168917" elapsed="0.000265"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:13.169748" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:13.169360" elapsed="0.000467">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:13.168444" elapsed="0.001502">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:13.170009" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:13.108257" elapsed="0.061871">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:13.170311" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:13.107381" elapsed="0.063043">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:13.106585" elapsed="0.063937">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:14.184223" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:14.180244" elapsed="0.006754">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:14.187489" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:14.187201" elapsed="0.000398"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:14.187162" elapsed="0.000589"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:14.187829" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:14.178900" elapsed="0.009102">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:14.188315" elapsed="0.000034"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:14.188418" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:14.177377" elapsed="0.011186">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:14.188734" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:14.188798" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:14.175715" elapsed="0.013117"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:14.189067" elapsed="0.054504"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:14.245203" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:14.244975" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:14.244937" elapsed="0.000387"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:14.246198" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:14.245595" elapsed="0.000723">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:14.244337" elapsed="0.002160">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:14.246590" elapsed="0.000027"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:14.174351" elapsed="0.072392">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:14.247016" elapsed="0.000035"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:14.172828" elapsed="0.074380">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:14.171456" elapsed="0.075861">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:15.258859" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:15.255162" elapsed="0.006401">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:15.262071" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:15.261811" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:15.261775" elapsed="0.000436"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:15.262263" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:15.254512" elapsed="0.007918">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:15.262683" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:15.262779" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:15.253688" elapsed="0.009230">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:15.263079" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:15.263165" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:15.252421" elapsed="0.010779"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:15.263436" elapsed="0.033745"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:15.298185" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:15.298032" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:15.298006" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:15.298778" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:15.298419" elapsed="0.000432">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:15.297620" elapsed="0.001344">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:15.299026" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:15.250910" elapsed="0.048233">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:15.299320" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:15.249577" elapsed="0.049852">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:15.248457" elapsed="0.051100">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:16.312178" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:16.307514" elapsed="0.006524">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:16.314387" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:16.314186" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:16.314158" elapsed="0.000330"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:16.314525" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:16.306491" elapsed="0.008154">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:16.314832" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:16.314898" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:16.305259" elapsed="0.009739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:16.315161" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:16.315207" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:16.304034" elapsed="0.011197"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:16.315401" elapsed="0.041953"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:16.358433" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:16.358296" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:16.358271" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:16.359067" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:16.358674" elapsed="0.000485">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:16.357838" elapsed="0.001436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:16.359334" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:16.302858" elapsed="0.056574">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:16.359615" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:16.301445" elapsed="0.058280">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:16.300441" elapsed="0.059448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:17.370183" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:17.366563" elapsed="0.006314">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:17.373348" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:17.373047" elapsed="0.000401"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:17.373012" elapsed="0.000474"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:17.373536" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:17.365848" elapsed="0.007861">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:17.374007" elapsed="0.000035"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:17.374148" elapsed="0.000032"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:17.365008" elapsed="0.009338">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:17.374634" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:17.374719" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:17.364186" elapsed="0.010571"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:17.375003" elapsed="0.040191"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:17.416319" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:17.416157" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:17.416116" elapsed="0.000278"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:17.416971" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:17.416576" elapsed="0.000475">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:17.415687" elapsed="0.001501">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:17.417252" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:17.363397" elapsed="0.053959">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:17.417614" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:17.361810" elapsed="0.055921">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:17.360809" elapsed="0.057023">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:18.428351" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:18.424764" elapsed="0.006046">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:18.431305" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:18.430998" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:18.430955" elapsed="0.000450"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:18.431445" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:18.423927" elapsed="0.007665">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:18.431851" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:18.431944" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:18.422857" elapsed="0.009197">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:18.432259" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:18.432324" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:18.421793" elapsed="0.010564"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:18.432579" elapsed="0.041966"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:18.475579" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:18.475445" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:18.475419" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:18.476203" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:18.475816" elapsed="0.000461">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:18.475003" elapsed="0.001388">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:18.476552" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:18.420885" elapsed="0.055777">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:18.476841" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:18.419836" elapsed="0.057116">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:18.418906" elapsed="0.058140">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:19.489022" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:19.485502" elapsed="0.005543">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:19.491458" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:19.491213" elapsed="0.000312"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:19.491179" elapsed="0.000381"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:19.491607" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:19.484405" elapsed="0.007346">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:19.491953" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:19.492022" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:19.482994" elapsed="0.009145">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:19.492278" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:19.492325" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:19.481497" elapsed="0.010853"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:19.492525" elapsed="0.040496"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:19.534069" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:19.533932" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:19.533908" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:19.534697" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:19.534325" elapsed="0.000447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:19.533513" elapsed="0.001493">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:19.535071" elapsed="0.000033"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:19.480331" elapsed="0.054860">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:19.535372" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:19.479024" elapsed="0.056460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:19.477977" elapsed="0.057606">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:20.546297" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:20.542772" elapsed="0.005430">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:20.548512" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:20.548323" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:20.548298" elapsed="0.000296"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:20.548630" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:20.542114" elapsed="0.006632">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:20.548928" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:20.549013" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:20.541137" elapsed="0.007995">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:20.549250" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:20.549297" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:20.539881" elapsed="0.009440"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:20.549489" elapsed="0.039235"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:20.589814" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:20.589677" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:20.589652" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:20.590504" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:20.590046" elapsed="0.000534">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:20.589246" elapsed="0.001456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:20.590764" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:20.538746" elapsed="0.052118">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:20.591042" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:20.537450" elapsed="0.053720">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:20.536441" elapsed="0.054826">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:21.604407" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:21.599943" elapsed="0.006686">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:21.606983" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:21.606770" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:21.606742" elapsed="0.000328"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:21.607125" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:21.598790" elapsed="0.008469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:21.607450" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:21.607520" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:21.597227" elapsed="0.010396">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:21.607742" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:21.607790" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:21.595812" elapsed="0.012003"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:21.608063" elapsed="0.040725"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:21.650228" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:21.650030" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:21.649996" elapsed="0.000334"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:21.651054" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:21.650564" elapsed="0.000616">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:21.649472" elapsed="0.001862">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:21.651421" elapsed="0.000024"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:21.594567" elapsed="0.056996">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:21.651801" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:21.593161" elapsed="0.058783">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:21.592162" elapsed="0.059914">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:22.664559" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:22.660366" elapsed="0.006098">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:22.666780" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:22.666584" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:22.666559" elapsed="0.000302"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:22.666898" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:22.659247" elapsed="0.007768">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:22.667210" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:22.667277" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:22.657902" elapsed="0.009474">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:22.667552" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:22.667598" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:22.656605" elapsed="0.011018"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:22.667793" elapsed="0.035848"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:22.704979" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:22.704809" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:22.704776" elapsed="0.000294"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:22.705795" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:22.705306" elapsed="0.000594">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:22.704253" elapsed="0.002144">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:22.706497" elapsed="0.000019"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:22.655416" elapsed="0.051191">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:22.706817" elapsed="0.000025"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:22.653971" elapsed="0.052963">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:22.652927" elapsed="0.054111">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:23.719635" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:23.714649" elapsed="0.006836">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:23.721782" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:23.721599" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:23.721575" elapsed="0.000288"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:23.721899" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:23.713675" elapsed="0.008338">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:23.722272" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:23.722342" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:23.712462" elapsed="0.009981">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:23.722559" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:23.722605" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:23.711268" elapsed="0.011361"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:23.722797" elapsed="0.030901"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:23.754691" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:23.754560" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:23.754536" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:23.755345" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:23.754956" elapsed="0.000463">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:23.754154" elapsed="0.001379">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:23.755591" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:23.710131" elapsed="0.045559">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:23.755869" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:23.708885" elapsed="0.047090">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:23.707919" elapsed="0.048150">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:24.769459" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:24.764382" elapsed="0.007032">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:24.771859" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:24.771616" elapsed="0.000304"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:24.771586" elapsed="0.000360"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:24.772017" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:24.763283" elapsed="0.008880">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:24.772362" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:24.772430" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:24.761929" elapsed="0.010603">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:24.772669" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:24.772715" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:24.760631" elapsed="0.012108"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:24.772907" elapsed="0.039778"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:24.813874" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:24.813732" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:24.813703" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:24.814535" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:24.814142" elapsed="0.000476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:24.813214" elapsed="0.001522">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:24.814797" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:24.759372" elapsed="0.055526">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:24.815081" elapsed="0.000040"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:24.757977" elapsed="0.057238">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:24.756938" elapsed="0.058423">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:25.828311" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:25.824813" elapsed="0.005731">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:25.830946" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:25.830701" elapsed="0.000308"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:25.830664" elapsed="0.000374"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:25.831077" elapsed="0.000037"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:25.823739" elapsed="0.007484">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:25.831412" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:25.831482" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:25.822424" elapsed="0.009162">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:25.831709" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:25.831756" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:25.821057" elapsed="0.010726"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:25.831970" elapsed="0.035326"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:25.868300" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:25.868165" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:25.868140" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:25.868896" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:25.868533" elapsed="0.000437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:25.867735" elapsed="0.001401">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:25.869202" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:25.819713" elapsed="0.049590">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:25.869482" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:25.817963" elapsed="0.051629">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:25.816416" elapsed="0.053272">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:26.881291" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:26.877627" elapsed="0.005565">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:26.883500" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:26.883311" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:26.883286" elapsed="0.000295"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:26.883618" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:26.876633" elapsed="0.007101">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:26.883920" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:26.883988" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:26.875404" elapsed="0.008683">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:26.884220" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:26.884265" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:26.874067" elapsed="0.010223"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:26.884456" elapsed="0.033160"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:26.918635" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:26.918503" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:26.918479" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:26.919235" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:26.918863" elapsed="0.000444">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:26.918058" elapsed="0.001360">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:26.919478" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:26.872866" elapsed="0.046711">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:26.919754" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:26.871643" elapsed="0.048220">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:26.870703" elapsed="0.049360">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:27.928191" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:27.924773" elapsed="0.005867">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:27.931034" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:27.930789" elapsed="0.000333"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:27.930757" elapsed="0.000398"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:27.931202" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:27.924219" elapsed="0.007129">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:27.931583" elapsed="0.000026"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:27.931667" elapsed="0.000019"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:27.923481" elapsed="0.008313">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:27.931942" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:27.931998" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:27.922759" elapsed="0.009317"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:27.932319" elapsed="0.040449"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:27.973834" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:27.973696" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:27.973672" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:27.974468" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:27.974075" elapsed="0.000469">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:27.973260" elapsed="0.001398">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:27.974719" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:27.922122" elapsed="0.052695">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:27.975127" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:27.921384" elapsed="0.053857">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:27.920730" elapsed="0.054605">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:28.988919" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:28.983532" elapsed="0.007959">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:28.991903" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:28.991648" elapsed="0.000326"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:28.991615" elapsed="0.000644"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:28.992340" elapsed="0.000025"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:28.982486" elapsed="0.010017">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:28.992745" elapsed="0.000028"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:28.992832" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:28.980946" elapsed="0.012012">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:28.993125" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:28.993182" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:28.979702" elapsed="0.013510"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:28.993434" elapsed="0.046136"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:29.040811" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:29.040648" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:29.040619" elapsed="0.000279"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:29.041618" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:29.041125" elapsed="0.000586">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:29.040145" elapsed="0.001714">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:29.042015" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:28.978565" elapsed="0.063596">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:29.042395" elapsed="0.000027"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:28.977212" elapsed="0.065322">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:28.976209" elapsed="0.066447">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:30.054756" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:30.050661" elapsed="0.006767">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:30.057874" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:30.057601" elapsed="0.000353"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:30.057564" elapsed="0.000426"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:30.058041" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:30.049635" elapsed="0.008601">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:30.058494" elapsed="0.000029"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:30.058587" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:30.048406" elapsed="0.010320">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:30.058890" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:30.058953" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:30.047173" elapsed="0.011814"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:30.059238" elapsed="0.040195"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:30.100483" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:30.100348" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:30.100323" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:30.101112" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:30.100719" elapsed="0.000526">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:30.099910" elapsed="0.001527">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:30.101499" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:30.046005" elapsed="0.055593">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:30.101776" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:30.044634" elapsed="0.057253">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:30.043582" elapsed="0.058406">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:31.114782" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:31.109991" elapsed="0.006773">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:31.117169" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:31.116917" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:31.116884" elapsed="0.000430"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:31.117366" elapsed="0.000023"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:31.108888" elapsed="0.008625">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:31.117707" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:31.117774" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:31.107642" elapsed="0.010235">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:31.118014" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:31.118065" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:31.106437" elapsed="0.011652"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:31.118298" elapsed="0.042663"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:31.162432" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:31.162290" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:31.162259" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:31.163104" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:31.162682" elapsed="0.000534">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:31.161734" elapsed="0.001643">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:31.163460" elapsed="0.000023"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:31.105287" elapsed="0.058311">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:31.163805" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:31.103889" elapsed="0.060054">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:31.102853" elapsed="0.061193">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:32.177128" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:32.172122" elapsed="0.006904">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:32.179402" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:32.179203" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:32.179174" elapsed="0.000311"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:32.179523" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:32.170993" elapsed="0.008651">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:32.179828" elapsed="0.000021"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:32.179895" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:32.169682" elapsed="0.010312">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:32.180388" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:32.180436" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:32.168458" elapsed="0.012003"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:32.180633" elapsed="0.036228"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:32.217866" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:32.217732" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:32.217708" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:32.218480" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:32.218117" elapsed="0.000436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:32.217321" elapsed="0.001346">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:32.218727" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:32.167302" elapsed="0.051525">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:32.219005" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:32.165931" elapsed="0.053215">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:32.164892" elapsed="0.054353">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:33.232147" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:33.227824" elapsed="0.006220">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:33.234372" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:33.234183" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:33.234157" elapsed="0.000297"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:33.234490" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:33.226723" elapsed="0.007882">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:33.234786" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:33.234918" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:33.225332" elapsed="0.009690">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:33.235159" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:33.235205" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:33.223959" elapsed="0.011271"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:33.235400" elapsed="0.034758"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:33.271236" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:33.271081" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:33.271056" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:33.271834" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:33.271470" elapsed="0.000437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:33.270666" elapsed="0.001353">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:33.272085" elapsed="0.000034"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:33.222703" elapsed="0.049500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:33.272383" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:33.221272" elapsed="0.051222">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:33.220198" elapsed="0.052393">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:34.285058" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:34.280427" elapsed="0.006503">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:34.287254" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:34.287050" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:34.287025" elapsed="0.000391"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:34.287463" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:34.279364" elapsed="0.008218">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:34.287771" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:34.287839" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:34.278057" elapsed="0.009883">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:34.288058" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:34.288121" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:34.276851" elapsed="0.011296"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:34.288316" elapsed="0.039768"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:34.329120" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:34.328969" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:34.328945" elapsed="0.000244"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:34.329721" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:34.329354" elapsed="0.000441">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:34.328551" elapsed="0.001357">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:34.329970" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:34.275702" elapsed="0.054368">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:34.330271" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:34.274408" elapsed="0.055972">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:34.273437" elapsed="0.057039">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:35.343435" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:35.338928" elapsed="0.006451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:35.345783" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:35.345568" elapsed="0.000275"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:35.345542" elapsed="0.000327"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:35.345907" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:35.337818" elapsed="0.008212">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:35.346234" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:35.346306" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:35.336415" elapsed="0.009996">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:35.346538" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:35.346600" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:35.335162" elapsed="0.011471"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:35.346828" elapsed="0.044283"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:35.392198" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:35.392040" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:35.392013" elapsed="0.000257"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:35.392825" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:35.392443" elapsed="0.000460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:35.391605" elapsed="0.001413">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:35.393078" elapsed="0.000032"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:35.333846" elapsed="0.059347">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:35.393370" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:35.332383" elapsed="0.061098">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:35.331378" elapsed="0.062262">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:36.406549" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:36.401526" elapsed="0.007143">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:36.409045" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:36.408815" elapsed="0.000315"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:36.408784" elapsed="0.000393"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:36.409230" elapsed="0.000026"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:36.400518" elapsed="0.008891">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:36.409631" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:36.409700" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:36.399240" elapsed="0.010560">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:36.409932" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:36.409978" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:36.398015" elapsed="0.011987"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:36.410188" elapsed="0.047370"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:36.458681" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:36.458542" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:36.458515" elapsed="0.000239"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:36.459336" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:36.458926" elapsed="0.000491">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:36.458073" elapsed="0.001465">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:36.459599" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:36.396873" elapsed="0.062825">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:36.459915" elapsed="0.000024"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:36.395440" elapsed="0.064592">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:36.394481" elapsed="0.065782">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:37.472876" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:37.468522" elapsed="0.006514">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:37.475433" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:37.475203" elapsed="0.000308"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:37.475165" elapsed="0.000377"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:37.475580" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:37.467518" elapsed="0.008188">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:37.475890" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:37.475957" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:37.466180" elapsed="0.009875">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:37.476198" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:37.476245" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:37.464878" elapsed="0.011400"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:37.476476" elapsed="0.043457"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:37.521403" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:37.521209" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:37.521175" elapsed="0.000326"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:37.522340" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:37.521730" elapsed="0.000717">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:37.520599" elapsed="0.002010">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:37.522693" elapsed="0.000024"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:37.463663" elapsed="0.059166">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:37.523190" elapsed="0.000034"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:37.462263" elapsed="0.061091">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:37.461182" elapsed="0.062307">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:38.535393" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:38.531400" elapsed="0.005988">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:38.537776" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:38.537546" elapsed="0.000290"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:38.537511" elapsed="0.000356"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:38.537907" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:38.530399" elapsed="0.007643">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:38.538269" elapsed="0.000023"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:38.538339" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:38.529167" elapsed="0.009277">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:38.538576" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:38.538624" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:38.527925" elapsed="0.010724"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:38.538825" elapsed="0.040314"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:38.580231" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:38.580071" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:38.580045" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:38.580884" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:38.580470" elapsed="0.000492">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:38.579632" elapsed="0.001448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:38.581235" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:38.526788" elapsed="0.054557">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:38.581528" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:38.525538" elapsed="0.056106">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:38.524346" elapsed="0.057397">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:39.594003" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:39.589673" elapsed="0.006323">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:39.596365" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:39.596141" elapsed="0.000293"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:39.596113" elapsed="0.000349"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:39.596501" elapsed="0.000018"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:39.588515" elapsed="0.008123">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:39.596839" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:39.596912" elapsed="0.000021"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:39.587145" elapsed="0.009879">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:39.597180" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:39.597230" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:39.585664" elapsed="0.011592"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:39.597439" elapsed="0.035447"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:39.633945" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:39.633807" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:39.633781" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:39.634650" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:39.634246" elapsed="0.000490">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:39.633357" elapsed="0.001574">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:39.634993" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:39.584487" elapsed="0.050636">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:39.635334" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:39.583179" elapsed="0.052267">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:39.582455" elapsed="0.053088">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:40.647940" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:40.643319" elapsed="0.007008">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:40.650737" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:40.650488" elapsed="0.000318"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:40.650454" elapsed="0.000390"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:40.650898" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:40.642342" elapsed="0.008712">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:40.651326" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:40.651416" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:40.641121" elapsed="0.010429">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:40.651691" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:40.651737" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:40.639927" elapsed="0.011834"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:40.651928" elapsed="0.031645"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:40.684570" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:40.684439" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:40.684415" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:40.685256" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:40.684800" elapsed="0.000535">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:40.684010" elapsed="0.001436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:40.685505" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:40.638581" elapsed="0.047024">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:40.685783" elapsed="0.000021"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:40.637304" elapsed="0.048589">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:40.636348" elapsed="0.049681">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:41.696260" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:41.691883" elapsed="0.007384">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:41.699759" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:41.699465" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:41.699418" elapsed="0.000462"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:41.699939" elapsed="0.000027"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:41.691270" elapsed="0.008872">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:41.700406" elapsed="0.000031"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:41.700503" elapsed="0.000023"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:41.690464" elapsed="0.010199">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:41.700841" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:41.700901" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:41.689559" elapsed="0.011375"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:41.701306" elapsed="0.082689"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:41.785390" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:41.785223" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:41.785193" elapsed="0.000274"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:41.786124" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:41.785654" elapsed="0.000563">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:41.784691" elapsed="0.001652">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:41.786405" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:41.688783" elapsed="0.097721">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:41.786684" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:41.687896" elapsed="0.098898">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:41.686975" elapsed="0.099917">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:42.799024" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:42.794795" elapsed="0.007216">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:42.802565" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:42.802241" elapsed="0.000411"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:42.802188" elapsed="0.000499"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:42.802740" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:42.793798" elapsed="0.009112">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:42.803192" elapsed="0.000039"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:42.803349" elapsed="0.000029"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:42.792558" elapsed="0.010993">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:42.803815" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:42.803885" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:42.791309" elapsed="0.012615"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:42.804226" elapsed="0.038323"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:42.843717" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:42.843575" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:42.843548" elapsed="0.000242"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:42.844375" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:42.843960" elapsed="0.000495">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:42.843068" elapsed="0.001507">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:42.844637" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:42.790161" elapsed="0.054576">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:42.844916" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:42.788849" elapsed="0.056190">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:42.787847" elapsed="0.057314">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:43.857160" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:43.853041" elapsed="0.006849">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:43.860357" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:43.860058" elapsed="0.000384"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:43.860023" elapsed="0.000457"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:43.860533" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:43.852047" elapsed="0.008655">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:43.861051" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:43.861176" elapsed="0.000025"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:43.850827" elapsed="0.010539">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:43.861574" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:43.861662" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:43.849595" elapsed="0.012119"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:43.861984" elapsed="0.045515"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:43.908585" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:43.908447" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:43.908422" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:43.909226" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:43.908827" elapsed="0.000476">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:43.907994" elapsed="0.001426">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:43.909481" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:43.848457" elapsed="0.061124">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:43.909763" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:43.847206" elapsed="0.062668">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:43.846077" elapsed="0.063894">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:44.916548" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:44.913775" elapsed="0.004676">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:44.918824" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:44.918635" elapsed="0.000246"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:44.918609" elapsed="0.000297"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:44.918943" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:44.913335" elapsed="0.005724">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:44.919259" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:44.919328" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:44.912721" elapsed="0.006709">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:44.919545" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:44.919591" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:44.912171" elapsed="0.007444"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:44.919783" elapsed="0.031394"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:44.952182" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:44.952027" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:44.952004" elapsed="0.000247"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:44.952777" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:44.952413" elapsed="0.000437">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:44.951617" elapsed="0.001366">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:44.953045" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:44.911640" elapsed="0.041520">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:44.953339" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:44.911044" elapsed="0.042407">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:44.910537" elapsed="0.043010">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:45.961658" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:45.958140" elapsed="0.006167">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:45.964727" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:45.964460" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:45.964426" elapsed="0.000407"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:45.964880" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:45.957567" elapsed="0.007459">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:45.965291" elapsed="0.000028"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:45.965379" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:45.956868" elapsed="0.008643">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:45.965659" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:45.965715" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:45.956184" elapsed="0.009562"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:45.965967" elapsed="0.037815"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:46.004785" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:46.004651" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:46.004627" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:46.005398" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:46.005018" elapsed="0.000454">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:46.004243" elapsed="0.001342">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:46.005647" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:45.955497" elapsed="0.050250">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:46.005927" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:45.954772" elapsed="0.051265">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:45.954177" elapsed="0.051973">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:47.018426" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.014075" elapsed="0.007244">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.021838" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.021520" elapsed="0.000413"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.021477" elapsed="0.000496"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.022028" elapsed="0.000024"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.013062" elapsed="0.009166">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.022508" elapsed="0.000033"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.022610" elapsed="0.000026"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.011810" elapsed="0.010981">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:47.022968" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.023038" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.010562" elapsed="0.012515"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.023354" elapsed="0.035909"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:47.060336" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.060198" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.060171" elapsed="0.000254"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.061034" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.060635" elapsed="0.000505">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:47.059744" elapsed="0.001517">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.061324" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.009393" elapsed="0.052031">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.061604" elapsed="0.000022"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.008077" elapsed="0.053640">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.007143" elapsed="0.054743">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:47.061975" level="FAIL">Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>120s</arg>
<arg>1s</arg>
<arg>PrefixCounting.Check_Ipv4_Topology_Is_Empty</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-17T03:23:46.590189" elapsed="120.471889">Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.063577" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.063250" elapsed="0.000372"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.062850" elapsed="0.000824"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.064550" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.064136" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.064116" elapsed="0.000523"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.064794" elapsed="0.000341"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.070384" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.069938" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:47.070631" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.070487" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.070468" elapsed="0.000250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.071212" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.070874" elapsed="0.000365"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:47.071799" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_For_Empty_Ipv4_Topology_Before_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.071438" elapsed="0.000397"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:47.072287" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:47.072052" elapsed="0.000264"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.072859" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.072492" elapsed="0.000395"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.073396" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.073049" elapsed="0.000376"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.074026" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"

Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:47.073587" elapsed="0.000550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.074753" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.074329" elapsed="0.000491"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.069618" elapsed="0.005279"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.063903" elapsed="0.011068"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.062464" elapsed="0.012566"/>
</kw>
<doc>Wait for example-ipv4-topology to come up and empty. Give large timeout for case when BGP boots slower than restconf.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:23:46.521794" elapsed="120.553277">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_before_talking&amp;order=bug_status"

Keyword 'PrefixCounting.Check_Ipv4_Topology_Is_Empty' failed after retrying for 2 minutes. The last error was: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s10-t2" name="Reconfigure_ODL_To_Accept_Connection" line="94">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.079884" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.079597" elapsed="0.000353">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.079364" elapsed="0.000653">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.079344" elapsed="0.000706">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.079162" elapsed="0.000995">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.080334" elapsed="0.000023"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.076836" elapsed="0.003616">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.082371" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.081982" elapsed="0.000435"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.081513" elapsed="0.000956"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.083400" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.082980" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.082959" elapsed="0.000528"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.083640" elapsed="0.000316"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.089675" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.089240" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:47.089942" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.089792" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.089772" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.090198" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.090376" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.090552" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.090814" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.091025" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.091217" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.091387" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.088856" elapsed="0.002608"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.082740" elapsed="0.008777"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.080754" elapsed="0.010807"/>
</kw>
<doc>Configure BGP peer module with initiate-connection set to false.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.076169" elapsed="0.015430">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s10-t3" name="Reconfigure_Data_Change_Counter" line="109">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.099694" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.099152" elapsed="0.000640">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.098548" elapsed="0.001344">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.098508" elapsed="0.001432">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.098120" elapsed="0.001950">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.100361" elapsed="0.000034"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.092828" elapsed="0.007700">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.102485" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.101988" elapsed="0.000561"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.101436" elapsed="0.001210"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.103917" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.103348" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.103320" elapsed="0.000725"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.104294" elapsed="0.000465"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.112261" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.111829" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:47.112510" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.112364" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.112346" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.112746" elapsed="0.000023"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.112924" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.113118" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.113309" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.113545" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.113717" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.113886" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.111512" elapsed="0.002451"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.103005" elapsed="0.011008"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.100951" elapsed="0.013102"/>
</kw>
<doc>Configure data change counter to count transactions in example-ipv4-topology instead of example-linkstate-topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.092190" elapsed="0.021915">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s10-t4" name="Verify_Data_Change_Counter_Ready" line="113">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.117953" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.117668" elapsed="0.000350">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.117442" elapsed="0.000642">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.117423" elapsed="0.000712">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.117229" elapsed="0.000993">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.118396" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.114888" elapsed="0.003616">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.119813" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.119502" elapsed="0.000354"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.119133" elapsed="0.000773"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.120816" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.120410" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.120389" elapsed="0.000515"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.121056" elapsed="0.000334"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.126690" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.126260" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:47.126938" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.126793" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.126775" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.127190" elapsed="0.000023"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.127372" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.127551" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.127727" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.127900" elapsed="0.000021"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.128147" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.128339" elapsed="0.000027"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.125929" elapsed="0.002513"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.120183" elapsed="0.008323"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.118808" elapsed="0.009744"/>
</kw>
<doc>Data change counter might have been slower to start than ipv4 topology, wait for it.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.114332" elapsed="0.014259">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s10-t5" name="Start_Talking_BGP_Speaker" line="117">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.133596" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.133192" elapsed="0.000497">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.132863" elapsed="0.000918">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.132837" elapsed="0.000986">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.132613" elapsed="0.001327">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.134201" elapsed="0.000032"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.129514" elapsed="0.004840">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.136201" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.135706" elapsed="0.000559"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.135195" elapsed="0.001141"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.137498" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.136957" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.136930" elapsed="0.000687"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.137825" elapsed="0.000434"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.144170" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.143682" elapsed="0.000519"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:47.144429" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.144280" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.144260" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.144672" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.144848" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.145020" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.145203" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.145374" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.145541" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.145778" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.143355" elapsed="0.002502"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.136669" elapsed="0.009238"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.134755" elapsed="0.011193"/>
</kw>
<doc>Start Python speaker to connect to ODL.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.128927" elapsed="0.017065">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s10-t6" name="Wait_For_Stable_Talking_Ipv4_Topology" line="124">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.149956" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.149666" elapsed="0.000365">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.149443" elapsed="0.000671">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.149424" elapsed="0.000725">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.149253" elapsed="0.000984">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.150409" elapsed="0.000023"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.146995" elapsed="0.003522">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.151869" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.151551" elapsed="0.000362"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.151175" elapsed="0.000801"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.152943" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.152477" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.152459" elapsed="0.000597"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.153290" elapsed="0.000357"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.159192" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.158753" elapsed="0.000478"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:47.159535" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.159333" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.159306" elapsed="0.000356"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.159823" elapsed="0.000023"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.160002" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.160197" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.160371" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.160546" elapsed="0.000024"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.160762" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.160934" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.158410" elapsed="0.002600"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.152259" elapsed="0.008867"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.150849" elapsed="0.010321"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable. This is done by checking the change counter.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.146360" elapsed="0.014849">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s10-t7" name="Check_Talking_Ipv4_Topology_Count" line="132">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:47.165016" elapsed="0.000279"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:47.164731" elapsed="0.000645"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.166540" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.166423" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.166400" elapsed="0.000243"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.171937" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.171828" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.171809" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.173314" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:47.172798" elapsed="0.000547"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.173983" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:47.173572" elapsed="0.000447"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:47.174080" elapsed="0.000064"/>
</return>
<msg time="2026-04-17T03:25:47.174312" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:47.172276" elapsed="0.002068"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.181014" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.180884" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.180860" elapsed="0.000248"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.182511" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.182365" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.182340" elapsed="0.000456"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.183497" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.183010" elapsed="0.000524"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.183999" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.183761" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.184927" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.184614" elapsed="0.001054">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.185860" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:47.185913" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.184221" elapsed="0.001723"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.186976" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.186637" elapsed="0.001229">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.188156" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:47.188227" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.186189" elapsed="0.002076"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.189488" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.188753" elapsed="0.000806">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.188400" elapsed="0.001229">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.188363" elapsed="0.001370">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.189909" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.190162" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.189997" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.189980" elapsed="0.000259"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.190277" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.193300" elapsed="0.000211"/>
</kw>
<msg time="2026-04-17T03:25:47.193609" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.191992" elapsed="0.001805"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.194246" elapsed="0.000106"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.194736" elapsed="0.000093"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.191322" elapsed="0.003629"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.190638" elapsed="0.004394"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.181993" elapsed="0.013190">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</status>
</kw>
<msg time="2026-04-17T03:25:47.195344" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.195410" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Talking_Ipv4_Topology_Count"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.181305" elapsed="0.014144"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.195738" elapsed="0.000248"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.195577" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.195544" elapsed="0.000503"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.196974" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.196865" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.196846" elapsed="0.000196"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.197366" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.197474" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.197222" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.198240" level="INFO">{1: 16}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.197723" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.198802" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.198493" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.199428" elapsed="0.000277"/>
</kw>
<msg time="2026-04-17T03:25:47.199804" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:47.199849" level="INFO">${old_connection_index} = 16</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.199018" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.200716" elapsed="0.000193"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.202011" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.201588" elapsed="0.001440">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.201080" elapsed="0.002063"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.203792" elapsed="0.000276"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.203320" elapsed="0.000847"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:47.200200" elapsed="0.004085"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.199951" elapsed="0.004388"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.199930" elapsed="0.004436"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.205284" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.204947" elapsed="0.000364"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:47.205363" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:25:47.205521" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.204597" elapsed="0.000948"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.205705" elapsed="0.000467"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.206548" level="INFO">index=17
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.206674" level="INFO">${karaf_connection_object} = index=17
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.206384" elapsed="0.000323"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.206903" elapsed="0.003320"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.210876" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:47.212272" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.210451" elapsed="0.002280">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.228223" elapsed="0.000434"/>
</kw>
<msg time="2026-04-17T03:25:47.228787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.226399" elapsed="0.002601"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.229253" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.229501" elapsed="0.000033"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.213669" elapsed="0.015959"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.213057" elapsed="0.016643"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.196545" elapsed="0.033284">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.230280" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.230364" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.180460" elapsed="0.050022">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:47.230621" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.230666" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.174860" elapsed="0.055830"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.231066" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.230778" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.230757" elapsed="0.000651"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:47.174661" elapsed="0.056772"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:47.174415" elapsed="0.057055"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:47.171457" elapsed="0.060075"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:47.166035" elapsed="0.065617"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.165559" elapsed="0.066141"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:47.162198" elapsed="0.069559"/>
</kw>
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:47.237503" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.234678" elapsed="0.004740">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.239732" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.239535" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.239508" elapsed="0.000307"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.239850" elapsed="0.000017"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.234187" elapsed="0.005776">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.240209" elapsed="0.000025"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.240290" elapsed="0.000016"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.233631" elapsed="0.006761">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:47.240527" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.240587" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.233077" elapsed="0.007536"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.240792" elapsed="0.047020"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:47.288863" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.288728" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.288704" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.289484" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.289111" elapsed="0.000456">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:47.288304" elapsed="0.001375">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.289738" elapsed="0.000017"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.232542" elapsed="0.057291">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.290147" elapsed="0.000023"/>
</kw>
<arg>${COUNT_CHANGE_COUNT_SINGLE}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.231987" elapsed="0.058272">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.291655" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.291336" elapsed="0.000362"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.290940" elapsed="0.000809"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.292584" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.292203" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.292185" elapsed="0.000485"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.292821" elapsed="0.000324"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.298340" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.297910" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:47.298598" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.298456" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.298437" elapsed="0.000223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.299120" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.298810" elapsed="0.000338"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:47.299573" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_Talking_Ipv4_Topology_Count</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.299307" elapsed="0.000292"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:47.299933" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:47.299760" elapsed="0.000199"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.300481" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.300136" elapsed="0.000372"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.300975" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.300666" elapsed="0.000337"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.301608" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:47.301175" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.302126" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.301818" elapsed="0.000356"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.297598" elapsed="0.004630"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.291975" elapsed="0.010350"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.290625" elapsed="0.011743"/>
</kw>
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:25:47.161516" elapsed="0.140891">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_talking_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s10-t8" name="Kill_Talking_BGP_Speaker" line="138">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:47.306003" elapsed="0.000244"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:47.305692" elapsed="0.000611"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.307360" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.307247" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.307228" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.312298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.312192" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.312174" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.313390" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:47.312984" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.313877" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:47.313582" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:47.313946" elapsed="0.000034"/>
</return>
<msg time="2026-04-17T03:25:47.314126" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:47.312602" elapsed="0.001551"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.319983" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.319860" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.319839" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.321372" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.321253" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.321227" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.321920" level="INFO">${karaf_connection_index} = 17</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.321593" elapsed="0.000355"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.322361" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.322136" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.323223" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.322924" elapsed="0.001037">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.324165" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:47.324212" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.322583" elapsed="0.001652"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.325065" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.324812" elapsed="0.000934">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.325931" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:47.325977" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.324452" elapsed="0.001548"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.326975" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.326338" elapsed="0.000775">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.326081" elapsed="0.001103">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.326059" elapsed="0.001158">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.327384" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.327619" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.327469" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.327452" elapsed="0.000241"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.327728" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.330537" elapsed="0.000197"/>
</kw>
<msg time="2026-04-17T03:25:47.330808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.329253" elapsed="0.001691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.331257" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.331606" elapsed="0.000075"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.328596" elapsed="0.003197"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.328026" elapsed="0.003834"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.320906" elapsed="0.011043">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:25:47.332057" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.332199" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Talking_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.320255" elapsed="0.011973"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.332466" elapsed="0.000210"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.332336" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.332311" elapsed="0.000423"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.333607" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.333495" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.333477" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.333965" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.334070" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.333836" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.334576" level="INFO">{1: 17}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.334278" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.335027" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.334781" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.335738" elapsed="0.000283"/>
</kw>
<msg time="2026-04-17T03:25:47.336239" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:47.336286" level="INFO">${old_connection_index} = 17</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.335256" elapsed="0.001053"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.337155" elapsed="0.000197"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.338566" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.338110" elapsed="0.001419">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.337539" elapsed="0.002093"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.340510" elapsed="0.000286"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.339909" elapsed="0.000973"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:47.336623" elapsed="0.004307"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.336387" elapsed="0.004593"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.336367" elapsed="0.004639"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.341899" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.341588" elapsed="0.000337"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:47.341976" elapsed="0.000052"/>
</return>
<msg time="2026-04-17T03:25:47.342202" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.341246" elapsed="0.000981"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.342441" elapsed="0.000501"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.343266" level="INFO">index=18
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.343366" level="INFO">${karaf_connection_object} = index=18
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.343148" elapsed="0.000245"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.343550" elapsed="0.002564"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.346576" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:47.347830" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.346286" elapsed="0.001964">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.363500" elapsed="0.000446"/>
</kw>
<msg time="2026-04-17T03:25:47.364039" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.361743" elapsed="0.002467"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.364381" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.364548" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.349122" elapsed="0.015509"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.348567" elapsed="0.016109"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.333190" elapsed="0.031571">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.365159" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.365237" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.319463" elapsed="0.045887">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:47.365469" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.365514" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.314549" elapsed="0.050989"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.365906" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.365638" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.365616" elapsed="0.000424"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:47.314389" elapsed="0.051680"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:47.314209" elapsed="0.051912"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:47.311820" elapsed="0.054397"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:47.306933" elapsed="0.059345"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.306504" elapsed="0.059821"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:47.303487" elapsed="0.062931"/>
</kw>
<kw name="Store_Change_Count">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Change_Count" owner="ChangeCounter">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:47.370441" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${CC_DATA_CHANGE_COUNTER_URL}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.367764" elapsed="0.004606">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.372569" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${count}</var>
<arg>json.loads('${response.text}')["data-change-counter:data-change-counter"]["counter"][0]["count"]</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.372745" elapsed="0.000020"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.372811" elapsed="0.000017"/>
</return>
<doc>GET data change request, assert status 200, return the value.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.367466" elapsed="0.005451">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:47.373027" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.373083" level="INFO">${count} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${count}</var>
<arg>ChangeCounter.Get_Change_Count</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.366902" elapsed="0.006232"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${last_change_count_single}</arg>
<arg>${count}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.373499" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.373219" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.373198" elapsed="0.000404"/>
</if>
<doc>Get the count of changes from BGP change counter. Ignore error or store the value.</doc>
<status status="PASS" start="2026-04-17T03:25:47.366614" elapsed="0.007046"/>
</kw>
<kw name="Kill_BGP_Speaker" owner="BGPSpeaker">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.375619" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.374823" elapsed="0.000831"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-17T03:25:47.375862" elapsed="0.000361"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-17T03:25:47.374458" elapsed="0.001837"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.380605" level="INFO">^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:25:47.376867" elapsed="0.003830"/>
</kw>
<msg time="2026-04-17T03:25:47.380832" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:47.380886" level="INFO">${message} =  ^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.376461" elapsed="0.004459"/>
</kw>
<kw name="Dump_BGP_Speaker_Logs" owner="BGPSpeaker">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.381816" level="INFO">Executing command 'cat play.py.out'.</msg>
<msg time="2026-04-17T03:25:47.404805" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:47.405049" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${BGPSpeaker__OUTPUT_LOG}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:47.381630" elapsed="0.023451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.405857" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.405435" elapsed="0.000474"/>
</kw>
<doc>Send all output produced by the play.py utility to Robot logs.
This needs to be called if your suite detects play.py crashing and bypasses
Kill_BGP_Speaker in that case otherwise the output of play.py (which most
likely contains clues about why it crashed) will be lost.</doc>
<status status="PASS" start="2026-04-17T03:25:47.381231" elapsed="0.024757"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<status status="PASS" start="2026-04-17T03:25:47.406297" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.406118" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.406059" elapsed="0.000479"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.406748" elapsed="0.000028"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The prompt was not seen within timeout period.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.406973" elapsed="0.000023"/>
</kw>
<doc>Interrupt play.py, fail if no prompt is seen within SSHLibrary timeout.
Also dump the logs with the output the program produced.
This keyword is also suitable for stopping BGP manager.</doc>
<status status="PASS" start="2026-04-17T03:25:47.373999" elapsed="0.033070"/>
</kw>
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.408222" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.407777" elapsed="0.000498"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:25:47.407371" elapsed="0.000975"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.409977" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.409472" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.409448" elapsed="0.000636"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.410302" elapsed="0.000424"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.417657" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.417074" elapsed="0.000618"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:47.417978" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.417796" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.417769" elapsed="0.000338"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.418329" elapsed="0.000027"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.418558" elapsed="0.000024"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.418784" elapsed="0.000025"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.419004" elapsed="0.000024"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.419239" elapsed="0.000025"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.419459" elapsed="0.000024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.419679" elapsed="0.000024"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.416635" elapsed="0.003140"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.409211" elapsed="0.010630"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.408686" elapsed="0.011208"/>
</kw>
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:25:47.302851" elapsed="0.117099"/>
</test>
<test id="s1-s10-t9" name="Store_Results_For_Talking_BGP_Speaker" line="148">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:47.424749" elapsed="0.000279"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:47.424410" elapsed="0.000703"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.426494" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.426286" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.426259" elapsed="0.000324"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.433283" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.433131" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.433086" elapsed="0.000293"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.434803" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:47.434231" elapsed="0.000727"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.435580" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:47.435198" elapsed="0.000414"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:47.435667" elapsed="0.000044"/>
</return>
<msg time="2026-04-17T03:25:47.435868" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:47.433718" elapsed="0.002181"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.443438" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.443285" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.443238" elapsed="0.000290"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.445132" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.444971" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.444948" elapsed="0.000273"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.445795" level="INFO">${karaf_connection_index} = 18</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.445418" elapsed="0.000410"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.446349" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.446043" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.447387" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.447033" elapsed="0.001454">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.448712" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:47.448770" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.446595" elapsed="0.002205"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.449980" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.449500" elapsed="0.001366">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.451085" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:47.451159" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.449027" elapsed="0.002160"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.452323" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.451571" elapsed="0.000827">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.451284" elapsed="0.001199">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.451259" elapsed="0.001264">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.452738" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.453031" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.452843" elapsed="0.000281"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.452823" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.453196" elapsed="0.000019"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.456569" elapsed="0.000180"/>
</kw>
<msg time="2026-04-17T03:25:47.456828" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.455026" elapsed="0.001957"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.457376" elapsed="0.000087"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.457786" elapsed="0.000147"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.454245" elapsed="0.003824"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.453553" elapsed="0.004621"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.444533" elapsed="0.013777">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:25:47.458437" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.458493" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Talking_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.443741" elapsed="0.014783"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.458754" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.458622" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.458598" elapsed="0.000240"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.459930" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.459803" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.459780" elapsed="0.000234"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.460509" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.460636" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.460354" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.461216" level="INFO">{1: 18}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.460872" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.461769" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.461472" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.462571" elapsed="0.000328"/>
</kw>
<msg time="2026-04-17T03:25:47.463017" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:47.463072" level="INFO">${old_connection_index} = 18</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.462036" elapsed="0.001082"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.464202" elapsed="0.000233"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.465999" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.465266" elapsed="0.001915">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.464655" elapsed="0.002646"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.468116" elapsed="0.000334"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.467526" elapsed="0.001023"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:47.463501" elapsed="0.005104"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.463213" elapsed="0.005453"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.463190" elapsed="0.005506"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.469791" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.469420" elapsed="0.000404"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:47.469883" elapsed="0.000039"/>
</return>
<msg time="2026-04-17T03:25:47.470068" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.468975" elapsed="0.001140"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.470347" elapsed="0.000428"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.471060" level="INFO">index=19
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.471178" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.470950" elapsed="0.000309"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.471419" elapsed="0.002399"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.474297" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:47.475549" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.473987" elapsed="0.001943">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.489908" elapsed="0.000426"/>
</kw>
<msg time="2026-04-17T03:25:47.490424" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.488512" elapsed="0.002065"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.490746" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.490914" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.476774" elapsed="0.014220"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.476241" elapsed="0.014799"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.459438" elapsed="0.031817">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.491631" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.491706" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.442775" elapsed="0.049040">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:47.491925" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.491969" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.436405" elapsed="0.055587"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.492355" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.492074" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.492054" elapsed="0.000377"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:47.436212" elapsed="0.056243"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:47.435971" elapsed="0.056518"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:47.432591" elapsed="0.059958"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:47.425900" elapsed="0.066705"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.425322" elapsed="0.067328"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:47.421107" elapsed="0.071597"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.500518" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:25:47.500614" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:25:47.493269" elapsed="0.007370"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.500949" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:25:47.513350" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:47.513442" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:47.500809" elapsed="0.012657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.514664" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.513724" elapsed="0.001004"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:47.515269" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:25:47.514941" elapsed="0.000382"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:25:47.492864" elapsed="0.022526"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.556822" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:25:47.556917" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:25:47.515935" elapsed="0.041008"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.557270" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:25:47.569481" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:47.569572" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:47.557131" elapsed="0.012466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.570314" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.569760" elapsed="0.000596"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:47.570781" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:25:47.570534" elapsed="0.000299"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:25:47.515539" elapsed="0.055352"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.613167" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:25:47.613263" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:25:47.571431" elapsed="0.041858"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.613597" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:25:47.625533" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:47.625625" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:47.613459" elapsed="0.012190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.626067" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.625812" elapsed="0.000330"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:47.626572" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-talking-totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-talking-totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:25:47.626323" elapsed="0.000302"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>changecount-talking-totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:25:47.571031" elapsed="0.055651"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.669148" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:25:47.669243" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:25:47.627224" elapsed="0.042045"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.669575" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:25:47.681910" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:47.682001" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:47.669436" elapsed="0.012589"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.682479" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.682226" elapsed="0.000294"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:47.682939" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-talking-performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-talking-performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:25:47.682694" elapsed="0.000298"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>changecount-talking-performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:25:47.626824" elapsed="0.056225"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.683673" elapsed="0.000251"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.684864" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.684462" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.684438" elapsed="0.000513"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.685119" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.690488" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.690059" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:47.690880" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.690589" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.690571" elapsed="0.000399"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.691138" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.691316" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.691491" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.691659" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.691826" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.691996" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.692177" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.689732" elapsed="0.002522"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.684238" elapsed="0.008067"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.683353" elapsed="0.008991"/>
</kw>
<doc>Store results for plotting</doc>
<status status="PASS" start="2026-04-17T03:25:47.420433" elapsed="0.271949"/>
</test>
<test id="s1-s10-t10" name="Wait_For_Stable_Ipv4_Topology_After_Talking" line="156">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.696191" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.695936" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.695918" elapsed="0.000355"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.695751" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.697327" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.697221" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.697203" elapsed="0.000190"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.702290" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.702185" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.702167" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.703363" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:47.702965" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.703844" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:47.703553" elapsed="0.000317"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:47.703913" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:25:47.704065" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:47.702587" elapsed="0.001515"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.709643" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.709531" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.709510" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.710921" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.710814" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.710795" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.711461" level="INFO">${karaf_connection_index} = 19</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.711162" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.711867" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.711650" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.712800" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.712420" elapsed="0.001035">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.713641" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:47.713686" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.712060" elapsed="0.001649"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.714506" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.714264" elapsed="0.000896">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.715345" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:47.715391" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.713884" elapsed="0.001530"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.716341" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.715718" elapsed="0.000685">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.715489" elapsed="0.000983">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.715470" elapsed="0.001034">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.716670" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.716899" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.716754" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.716737" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.717005" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.719616" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:25:47.719824" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.718473" elapsed="0.001476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.720255" elapsed="0.000073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.720585" elapsed="0.000074"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.717823" elapsed="0.002943"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.717287" elapsed="0.003543"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.710508" elapsed="0.010407">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</status>
</kw>
<msg time="2026-04-17T03:25:47.721016" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.721059" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.709868" elapsed="0.011261"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.721318" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.721209" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.721190" elapsed="0.000192"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.722231" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.722125" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.722106" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.722570" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.722671" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.722451" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.723127" level="INFO">{1: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.722851" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.723574" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.723330" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.724211" elapsed="0.000260"/>
</kw>
<msg time="2026-04-17T03:25:47.724573" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:47.724619" level="INFO">${old_connection_index} = 19</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.723779" elapsed="0.000863"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.725471" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.728301" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.726348" elapsed="0.002822">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.725833" elapsed="0.003437"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.729922" elapsed="0.000307"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.729453" elapsed="0.000858"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:47.724941" elapsed="0.005415"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.724716" elapsed="0.005688"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.724698" elapsed="0.005730"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.731296" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.730975" elapsed="0.000348"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:47.731371" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:25:47.731525" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.730643" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.731711" elapsed="0.000430"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.732426" level="INFO">index=20
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.732525" level="INFO">${karaf_connection_object} = index=20
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.732316" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.732700" elapsed="0.002367"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.735507" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:47.736584" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.735248" elapsed="0.001715">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.750925" elapsed="0.000405"/>
</kw>
<msg time="2026-04-17T03:25:47.751417" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.749536" elapsed="0.002030"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.751730" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.751896" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.737864" elapsed="0.014113"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.737336" elapsed="0.014687"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.721789" elapsed="0.030450">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.752607" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.752681" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.709194" elapsed="0.043595">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:47.752897" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.752941" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.704527" elapsed="0.048437"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.753317" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.753044" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.753024" elapsed="0.000370"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:47.704378" elapsed="0.049039"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:47.704200" elapsed="0.049250"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:47.701796" elapsed="0.051711"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:47.696916" elapsed="0.056651"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.696475" elapsed="0.057135"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:47.693319" elapsed="0.060343"/>
</kw>
<kw name="Wait_For_Change_Count_To_Become_Stable" owner="ChangeCounter">
<kw name="Create_Limiting_Stability_Safe_Stateful_Validator_From_Value_To_Overcome" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.767371" level="INFO">${valid_minimum} = 2</msg>
<var>${valid_minimum}</var>
<arg>str(int(${maximum_invalid}) + 1)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.766992" elapsed="0.000406"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:25:47.767908" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:25:47.768136" level="INFO">${validator} = ['WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'valid_minimum': '2'}]</msg>
<var>${validator}</var>
<arg>WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword</arg>
<arg>state_holder</arg>
<arg>data_holder</arg>
<arg>valid_minimum=${valid_minimum}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.767609" elapsed="0.000555"/>
</kw>
<return>
<value>${validator}</value>
<status status="PASS" start="2026-04-17T03:25:47.768215" elapsed="0.000027"/>
</return>
<msg time="2026-04-17T03:25:47.768363" level="INFO">${validator} = ['WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'valid_minimum': '2'}]</msg>
<var>${validator}</var>
<arg>maximum_invalid=${count_to_overcome}</arg>
<doc>Helper function to use if maximum invalid value (instead of minimum valid) is known.</doc>
<status status="PASS" start="2026-04-17T03:25:47.766620" elapsed="0.001768"/>
</kw>
<kw name="Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.769763" level="INFO">${tmp} = 1</msg>
<var>${tmp}</var>
<arg>int(${count})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.769428" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.770276" level="INFO">count=1</msg>
<arg>count=${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.769949" elapsed="0.000371"/>
</kw>
<kw name="WaitUtils__Check_Sanity_And_Compute_Derived_Times" owner="WaitUtils">
<if>
<branch type="IF" condition="int(${count}) &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>\${count} is ${count} and not at least 1.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.771311" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.771066" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.771047" elapsed="0.000343"/>
</if>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:25:47.771794" level="INFO">${period_in_seconds} = 60.0</msg>
<var>${period_in_seconds}</var>
<arg>${period}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:25:47.771536" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="${period_in_seconds} &lt;= 0.0">
<kw name="Fail" owner="BuiltIn">
<arg>\${period} ${period} has to be positive.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.772121" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.771887" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.771870" elapsed="0.000328"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:25:47.772505" level="INFO">${date_now} = 2026-04-17 03:25:47.772</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:25:47.772344" elapsed="0.000187"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:25:47.772917" level="INFO">${timeout_in_seconds} = 420.0</msg>
<var>${timeout_in_seconds}</var>
<arg>${timeout}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:25:47.772682" elapsed="0.000260"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-17T03:25:47.773427" level="INFO">${date_deadline} = 2026-04-17 03:32:47.772</msg>
<var>${date_deadline}</var>
<arg>${date_now}</arg>
<arg>${timeout_in_seconds}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-17T03:25:47.773115" elapsed="0.000338"/>
</kw>
<return>
<value>${timeout_in_seconds}</value>
<value>${period_in_seconds}</value>
<value>${date_deadline}</value>
<status status="PASS" start="2026-04-17T03:25:47.773499" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:25:47.773733" level="INFO">${timeout_in_seconds} = 420.0</msg>
<msg time="2026-04-17T03:25:47.773778" level="INFO">${period_in_seconds} = 60.0</msg>
<msg time="2026-04-17T03:25:47.773820" level="INFO">${date_deadline} = 2026-04-17 03:32:47.772</msg>
<var>${timeout_in_seconds}</var>
<var>${period_in_seconds}</var>
<var>${date_deadline}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${count}</arg>
<doc>Common checks for argument values. Return times in seconds and deadline date implied by timeout time.</doc>
<status status="PASS" start="2026-04-17T03:25:47.770613" elapsed="0.003229"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.774462" level="INFO">${maximum_sleeps} = 7</msg>
<var>${maximum_sleeps}</var>
<arg>math.ceil(${timeout_in_seconds} / ${period_in_seconds})</arg>
<arg>modules=math</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.774025" elapsed="0.000463"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.774903" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.774650" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.775378" level="INFO">${state} = 1</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.775085" elapsed="0.000318"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline" owner="WaitUtils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.777252" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.776952" elapsed="0.000327"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.777722" level="INFO">${state} = 1</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.777440" elapsed="0.000308"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.778445" level="INFO">${sleeps} = 0</msg>
<var>${sleeps}</var>
<arg>${count} - 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.777908" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="WaitUtils__Is_Deadline_Reachable" owner="WaitUtils">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:25:47.779842" level="INFO">${date_now} = 2026-04-17 03:25:47.780</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:25:47.779691" elapsed="0.000178"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-17T03:25:47.780394" level="INFO">${time_deadline} = 419.992</msg>
<var>${time_deadline}</var>
<arg>${date_deadline}</arg>
<arg>${date_now}</arg>
<arg>result_format=number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-17T03:25:47.780023" elapsed="0.000398"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.780962" level="INFO">${time_minimal} = 0.0</msg>
<var>${time_minimal}</var>
<arg>int(${sleeps_left}) * ${period_in_seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.780587" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="${time_minimal} &gt;= ${time_deadline}">
<kw name="Fail" owner="BuiltIn">
<arg>Not possible to succeed within the deadline. ${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.781329" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.781061" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.781041" elapsed="0.000367"/>
</if>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Compute time to be wasted in sleeps, compare to deadline. Fail with message when needed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.779103" elapsed="0.002353"/>
</kw>
<msg time="2026-04-17T03:25:47.781561" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:47.781605" level="INFO">${message} = None</msg>
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.778644" elapsed="0.002984"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.781813" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.781706" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.781689" elapsed="0.000291"/>
</if>
<for flavor="IN RANGE">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Closure_As_Is" owner="ScalarClosures">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.784718" level="INFO">${keyword} = Get_Change_Count</msg>
<msg time="2026-04-17T03:25:47.784763" level="INFO">${args} = []</msg>
<msg time="2026-04-17T03:25:47.784806" level="INFO">${kwargs} = {}</msg>
<var>${keyword}</var>
<var>${args}</var>
<var>${kwargs}</var>
<arg>${closure}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.784359" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Get_Change_Count" owner="ChangeCounter">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:47.789490" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${CC_DATA_CHANGE_COUNTER_URL}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.786173" elapsed="0.005739">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.792316" elapsed="0.000053"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${count}</var>
<arg>json.loads('${response.text}')["data-change-counter:data-change-counter"]["counter"][0]["count"]</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.792612" elapsed="0.000046"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.792745" elapsed="0.000022"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>GET data change request, assert status 200, return the value.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.785521" elapsed="0.007422">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var>${result}</var>
<arg>${keyword}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.784998" elapsed="0.008007">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.793066" elapsed="0.000017"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Run the keyword from closure without affecting arguments.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.783970" elapsed="0.009218">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:47.793316" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.793360" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.783439" elapsed="0.009946"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.793550" elapsed="0.038817"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:47.833409" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.833275" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.833250" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.834033" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.833640" elapsed="0.000486">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:47.832842" elapsed="0.001402">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.834305" elapsed="0.000017"/>
</return>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.783012" elapsed="0.051391">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:47.834586" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.834631" level="INFO">${data} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${data}</var>
<arg>ScalarClosures.Run_Keyword_And_Collect_Garbage</arg>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.782581" elapsed="0.052074"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Getter failed: ${data}</value>
<status status="PASS" start="2026-04-17T03:25:47.834839" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.834732" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.834713" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.835110" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.835250" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.835214" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.835197" elapsed="0.000120"/>
</if>
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments</arg>
<arg>${safe_validator}</arg>
<arg>${state}</arg>
<arg>${data}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.835578" elapsed="0.000031"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Validator failed: ${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.835730" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.835694" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.835677" elapsed="0.000130"/>
</if>
<if>
<branch type="IF" condition="${sleeps_left} &lt;= 0">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.835900" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.835865" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.835850" elapsed="0.000115"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.836136" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.836268" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.836234" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.836218" elapsed="0.000115"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.836472" elapsed="0.000020"/>
</kw>
<var name="${sleeps_left}">0</var>
<status status="PASS" start="2026-04-17T03:25:47.782430" elapsed="0.054094"/>
</iter>
<var>${sleeps_left}</var>
<value>${count}-1</value>
<value>-1</value>
<value>-1</value>
<status status="PASS" start="2026-04-17T03:25:47.782023" elapsed="0.054536"/>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.836715" elapsed="0.000020"/>
</kw>
<msg time="2026-04-17T03:25:47.836937" level="INFO">${state} = 1</msg>
<msg time="2026-04-17T03:25:47.836980" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.837021" level="INFO">${result} = Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by New...</msg>
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>count=${count}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${safe_validator}</arg>
<arg>initial_state=${state}</arg>
<doc>Pass only if consecutively 1 times in a row with 60 between attempts: ${getter} creates data and ${safe_validator} passes. Validator updates its state even if it reports failure. Always return validator state, status and message.</doc>
<status status="PASS" start="2026-04-17T03:25:47.776257" elapsed="0.060787"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.837253" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.837146" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.837128" elapsed="0.000189"/>
</if>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.838715" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:25:47.838794" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.838431" elapsed="0.000428">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:25:47.838960" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.839004" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.838043" elapsed="0.000985"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.839277" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.839115" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.839081" elapsed="0.000265"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:25:47.839752" level="INFO">@{message_chunks} = [ Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by N...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:25:47.839498" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.842979" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:25:47.843055" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.840301" elapsed="0.002839">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:25:47.843243" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.843285" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.839947" elapsed="0.003363"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="PASS" start="2026-04-17T03:25:47.843486" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-17T03:25:47.843382" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.843363" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.843718" elapsed="0.000021"/>
</kw>
<arg>${result}</arg>
<arg>Not possible to succeed within the deadline.</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="PASS" start="2026-04-17T03:25:47.837594" elapsed="0.006275"/>
</kw>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.845171" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:25:47.845246" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.844904" elapsed="0.000401">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:25:47.845407" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.845450" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.844563" elapsed="0.000910"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.845649" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.845545" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.845526" elapsed="0.000189"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:25:47.846144" level="INFO">@{message_chunks} = [  | : ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnecti...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:25:47.845863" elapsed="0.000310"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.849211" level="INFO">Length is 0.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:25:47.846735" elapsed="0.002523"/>
</kw>
<msg time="2026-04-17T03:25:47.849348" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:47.849391" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.846393" elapsed="0.003020"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.849590" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.849486" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.849467" elapsed="0.000188"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.850165" level="FAIL">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.849802" elapsed="0.000427">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${result}</arg>
<arg>Getter failed</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.844178" elapsed="0.006213">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.850566" elapsed="0.000021"/>
</kw>
<var name="${try}">1</var>
<status status="FAIL" start="2026-04-17T03:25:47.775707" elapsed="0.074930">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${try}</var>
<value>1</value>
<value>${maximum_sleeps}+2</value>
<status status="FAIL" start="2026-04-17T03:25:47.775458" elapsed="0.075243">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.850869" elapsed="0.000021"/>
</kw>
<var>${result}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${repetitions}</arg>
<arg>getter=${ChangeCounter__getter}</arg>
<arg>safe_validator=${validator}</arg>
<arg>initial_state=${count_to_overcome}</arg>
<doc>Analogue of Wait Until Keyword Succeeds, but it passes state of validator around and exits early on getter failure. Calls GASSVHTSCBD to verify data is "stable".</doc>
<status status="FAIL" start="2026-04-17T03:25:47.768719" elapsed="0.082256">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.851045" elapsed="0.000017"/>
</return>
<arg>timeout=${bgp_emptying_timeout}</arg>
<arg>period=${CHECK_PERIOD_CHANGE_COUNT_SINGLE}</arg>
<arg>repetitions=${REPETITIONS_CHANGE_COUNT_SINGLE}</arg>
<arg>count_to_overcome=${last_change_count_single}</arg>
<doc>Each ${period} get count. After 1 of constant value above ${count_to_overcome} within ${timeout}, Return validator output. Fail early on getter error.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.765912" elapsed="0.085245">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.852520" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.852204" elapsed="0.000359"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.851815" elapsed="0.000799"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.853483" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.853072" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.853052" elapsed="0.000516"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.853718" elapsed="0.000328"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.859364" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.858904" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:47.859617" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.859471" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.859451" elapsed="0.000228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.860149" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.859831" elapsed="0.000345"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:47.860612" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Wait_For_Stable_Ipv4_Topology_After_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.860340" elapsed="0.000298"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:47.860976" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:47.860801" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.861515" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.861174" elapsed="0.000367"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.862130" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.861766" elapsed="0.000393"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.862758" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:47.862317" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.863280" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.862968" elapsed="0.000361"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.858564" elapsed="0.004821"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.852854" elapsed="0.010582"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.851495" elapsed="0.011983"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:25:47.692718" elapsed="0.170805">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_talking&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s10-t11" name="Check_For_Empty_Ipv4_Topology_After_Talking" line="165">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:47.866975" elapsed="0.000234"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:47.866706" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.868304" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.868182" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.868159" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.873387" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.873273" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.873253" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.874596" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:47.874188" elapsed="0.000437"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.875106" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:47.874792" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:47.875178" elapsed="0.000037"/>
</return>
<msg time="2026-04-17T03:25:47.875341" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:47.873708" elapsed="0.001657"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.881056" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.880944" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.880925" elapsed="0.000216"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.882374" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.882268" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.882250" elapsed="0.000246"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.882959" level="INFO">${karaf_connection_index} = 20</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.882653" elapsed="0.000333"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.883391" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.883172" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.884221" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.883942" elapsed="0.000930">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.885055" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:47.885116" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.883583" elapsed="0.001558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.885936" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.885663" elapsed="0.000924">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:47.886769" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:47.886821" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.885314" elapsed="0.001533"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.887799" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.887181" elapsed="0.000680">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.886933" elapsed="0.000996">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.886912" elapsed="0.001049">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.888143" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.888373" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.888228" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.888212" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.888478" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.891068" elapsed="0.000172"/>
</kw>
<msg time="2026-04-17T03:25:47.891306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.889940" elapsed="0.001491"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.891705" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.892039" elapsed="0.000091"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.889301" elapsed="0.002939"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.888750" elapsed="0.003553"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.881938" elapsed="0.010449">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</status>
</kw>
<msg time="2026-04-17T03:25:47.892490" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.892535" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Talking"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.881301" elapsed="0.011263"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.892748" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.892641" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.892622" elapsed="0.000192"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.893813" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.893707" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.893689" elapsed="0.000242"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.894231" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.894335" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.894107" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.894782" level="INFO">{1: 20}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.894521" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.895312" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.894988" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.896033" elapsed="0.000275"/>
</kw>
<msg time="2026-04-17T03:25:47.896406" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:47.896494" level="INFO">${old_connection_index} = 20</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.895522" elapsed="0.000997"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.897358" elapsed="0.000192"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.898649" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.898247" elapsed="0.001339">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.897723" elapsed="0.001960"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.900339" elapsed="0.000272"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.899859" elapsed="0.000834"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:47.896823" elapsed="0.003916"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.896596" elapsed="0.004191"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.896577" elapsed="0.004234"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:47.901672" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.901366" elapsed="0.000333"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:47.901746" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:25:47.901911" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.901022" elapsed="0.000914"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.902110" elapsed="0.000410"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.902805" level="INFO">index=21
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:47.902903" level="INFO">${karaf_connection_object} = index=21
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:47.902701" elapsed="0.000229"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.903082" elapsed="0.002649"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:47.906198" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:47.907314" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.905919" elapsed="0.001766">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:47.922646" elapsed="0.000581"/>
</kw>
<msg time="2026-04-17T03:25:47.923363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.920777" elapsed="0.002809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.923821" elapsed="0.000032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.924594" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:47.908498" elapsed="0.016196"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:47.907965" elapsed="0.016779"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.893412" elapsed="0.031422">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.925263" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.925344" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.880598" elapsed="0.044894">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:47.925653" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.925703" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.875749" elapsed="0.049978"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.926141" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.925834" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.925794" elapsed="0.000429"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:47.875599" elapsed="0.050649"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:47.875422" elapsed="0.050861"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:47.872873" elapsed="0.053468"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:47.867869" elapsed="0.058531"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.867423" elapsed="0.059025"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:47.864442" elapsed="0.062061"/>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:47.932844" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.929888" elapsed="0.004850">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.935084" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.934856" elapsed="0.000312"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:47.934828" elapsed="0.000376"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.935254" elapsed="0.000021"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.929397" elapsed="0.005978">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.935564" elapsed="0.000024"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.935634" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.928688" elapsed="0.007063">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:47.935950" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:47.935997" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:47.928173" elapsed="0.007848"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.936204" elapsed="0.038931"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:47.976231" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.976076" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.976050" elapsed="0.000253"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.976843" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.976473" elapsed="0.000466">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:47.975633" elapsed="0.001425">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:47.977137" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.927665" elapsed="0.049571">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.977413" elapsed="0.000023"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.927128" elapsed="0.050395">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.926727" elapsed="0.050929">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.979252" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.978906" elapsed="0.000391"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.978512" elapsed="0.000836"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.980244" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.979821" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.979802" elapsed="0.000529"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.980486" elapsed="0.000322"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.986363" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.985905" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:47.986621" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:47.986469" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.986449" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.987168" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:47.986837" elapsed="0.000426"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:47.987733" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_For_Empty_Ipv4_Topology_After_Talking</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:47.987433" elapsed="0.000337"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:47.988225" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:47.988013" elapsed="0.000238"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.988766" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.988411" elapsed="0.000382"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.989307" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:47.988972" elapsed="0.000363"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.990109" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:47.989494" elapsed="0.000674"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.990635" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:47.990334" elapsed="0.000350"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:47.985523" elapsed="0.005217"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.979577" elapsed="0.011213"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.978158" elapsed="0.012673"/>
</kw>
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:25:47.863881" elapsed="0.127001">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_talking&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s10-t12" name="Start_Listening_BGP_Speaker" line="171">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.995188" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.994810" elapsed="0.000476">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:47.994577" elapsed="0.000790">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:47.994558" elapsed="0.000843">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.994384" elapsed="0.001107">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.995666" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.991967" elapsed="0.003806">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:47.997177" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:47.996833" elapsed="0.000389"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:47.996409" elapsed="0.000922"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:47.998249" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:47.997832" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:47.997812" elapsed="0.000524"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:47.998486" elapsed="0.000314"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.004267" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.003655" elapsed="0.000640"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:48.004514" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-17T03:25:48.004368" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.004350" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.004751" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.004949" elapsed="0.000023"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.005149" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.005327" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.005499" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.005675" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.005897" elapsed="0.000023"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.003336" elapsed="0.002642"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:47.997585" elapsed="0.008456"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:47.996078" elapsed="0.010006"/>
</kw>
<doc>Start Python speaker in listening mode.</doc>
<status status="FAIL" start="2026-04-17T03:25:47.991333" elapsed="0.014811">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s10-t13" name="Reconfigure_ODL_To_Initiate_Connection" line="176">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.010045" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.009751" elapsed="0.000374">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:48.009506" elapsed="0.000684">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:48.009488" elapsed="0.000733">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.009317" elapsed="0.000991">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.010476" elapsed="0.000022"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.007084" elapsed="0.003498">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.012072" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:48.011759" elapsed="0.000372"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:48.011368" elapsed="0.000814"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.013061" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.012686" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.012668" elapsed="0.000496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.013315" elapsed="0.000305"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.018954" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.018547" elapsed="0.000434"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:48.019211" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-17T03:25:48.019053" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.019035" elapsed="0.000255"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.019441" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.019615" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.019788" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.019955" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.020137" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.020306" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.020473" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.018232" elapsed="0.002315"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.012426" elapsed="0.008169"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:48.011018" elapsed="0.009618"/>
</kw>
<doc>Replace BGP peer config module, now with initiate-connection set to true.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.006482" elapsed="0.014191">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s10-t14" name="Wait_For_Stable_Listening_Ipv4_Topology" line="192">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.024383" level="FAIL">SKIPPED due to a failure in a previous fundamental test case.</msg>
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.024110" elapsed="0.000333">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:48.023878" elapsed="0.000628">SKIPPED due to a failure in a previous fundamental test case.</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:48.023861" elapsed="0.000675">SKIPPED due to a failure in a previous fundamental test case.</status>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.023697" elapsed="0.000923">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.024785" elapsed="0.000021"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.021499" elapsed="0.003392">SKIPPED due to a failure in a previous fundamental test case.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.026193" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:48.025868" elapsed="0.000367"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:48.025483" elapsed="0.000803"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.027104" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.026717" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.026699" elapsed="0.000527"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.027379" elapsed="0.000308"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.032832" level="INFO">${test_skipped} = True</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.032435" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:48.033069" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-17T03:25:48.032932" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.032913" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.033322" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.033498" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.033672" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.033854" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.034024" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.034207" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.034375" elapsed="0.000018"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.032125" elapsed="0.002324"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.026504" elapsed="0.007994"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:48.025180" elapsed="0.009358"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.020962" elapsed="0.013617">Setup failed:
SKIPPED due to a failure in a previous fundamental test case.</status>
</test>
<test id="s1-s10-t15" name="Check_Listening_Ipv4_Topology_Count" line="200">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:48.037910" elapsed="0.000227"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:48.037605" elapsed="0.000586"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.039192" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.039066" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.039047" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.044147" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.044027" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.044009" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.045227" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:48.044830" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.045736" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:48.045419" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:48.045806" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:25:48.045957" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:48.044447" elapsed="0.001535"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.051665" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.051558" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.051538" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.052952" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.052813" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.052795" elapsed="0.000228"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.053501" level="INFO">${karaf_connection_index} = 21</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.053201" elapsed="0.000326"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.053972" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.053725" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.054813" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.054541" elapsed="0.000916">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.055642" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:48.055688" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.054185" elapsed="0.001527"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.056490" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.056248" elapsed="0.000888">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.057319" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:48.057363" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.055886" elapsed="0.001501"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.058332" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.057709" elapsed="0.000683">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:48.057463" elapsed="0.000996">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:48.057443" elapsed="0.001049">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.058657" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.058884" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.058741" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.058724" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.058990" elapsed="0.000014"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.061511" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:25:48.061748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.060450" elapsed="0.001425"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.062192" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.062530" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.059815" elapsed="0.002894"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.059280" elapsed="0.003492"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.052511" elapsed="0.010347">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</status>
</kw>
<msg time="2026-04-17T03:25:48.062960" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.063003" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_Listening_Ipv4_Topology_Count"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.051889" elapsed="0.011138"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.063231" elapsed="0.000182"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.063122" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.063084" elapsed="0.000382"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.064336" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.064230" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.064212" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.064680" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.064782" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.064558" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.065274" level="INFO">{1: 21}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.064965" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.065741" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.065482" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.066358" elapsed="0.000261"/>
</kw>
<msg time="2026-04-17T03:25:48.066719" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.066765" level="INFO">${old_connection_index} = 21</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.065947" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.067639" elapsed="0.000193"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.068914" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.068509" elapsed="0.001293">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.068003" elapsed="0.001899"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.070656" elapsed="0.000270"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.070078" elapsed="0.000931"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:48.067089" elapsed="0.003966"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.066863" elapsed="0.004256"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.066845" elapsed="0.004299"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.072002" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.071698" elapsed="0.000331"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:48.072078" elapsed="0.000046"/>
</return>
<msg time="2026-04-17T03:25:48.072249" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.071361" elapsed="0.000912"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.072434" elapsed="0.000417"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.073148" level="INFO">index=22
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.073249" level="INFO">${karaf_connection_object} = index=22
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.073025" elapsed="0.000251"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.073429" elapsed="0.002506"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.076387" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:48.077611" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.076120" elapsed="0.001897">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.092179" elapsed="0.000396"/>
</kw>
<msg time="2026-04-17T03:25:48.092668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.090726" elapsed="0.002096"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.093055" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.093243" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.078961" elapsed="0.014366"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.078416" elapsed="0.014958"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.063875" elapsed="0.029589">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.093868" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.093947" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.051222" elapsed="0.042839">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:48.094474" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.094520" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.046375" elapsed="0.048169"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.094901" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.094634" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.094612" elapsed="0.000367"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:48.046226" elapsed="0.048777"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:48.046036" elapsed="0.049001"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:48.043667" elapsed="0.051444"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:48.038775" elapsed="0.056396"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.038344" elapsed="0.056875"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:48.035458" elapsed="0.059815"/>
</kw>
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:48.100746" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.098026" elapsed="0.004541">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.102855" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.102670" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.102648" elapsed="0.000287"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.102970" elapsed="0.000015"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.097549" elapsed="0.005529">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.103278" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.103345" elapsed="0.000015"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.097006" elapsed="0.006436">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:48.103614" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.103660" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.096460" elapsed="0.007224"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.103850" elapsed="0.037319"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:48.142362" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.142226" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.142200" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.142981" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.142599" elapsed="0.000460">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:48.141716" elapsed="0.001472">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.143250" elapsed="0.000018"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.095954" elapsed="0.047413">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.143575" elapsed="0.000024"/>
</kw>
<arg>${COUNT_CHANGE_COUNT_SINGLE}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.095497" elapsed="0.048191">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.145404" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:48.145002" elapsed="0.000449"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:48.144446" elapsed="0.001059"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.146446" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.146024" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.146004" elapsed="0.000529"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.146691" elapsed="0.000424"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.153121" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.152495" elapsed="0.000666"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:48.153468" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.153267" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.153238" elapsed="0.000325"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.154247" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.153804" elapsed="0.000478"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:48.154951" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_Listening_Ipv4_Topology_Count</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.154592" elapsed="0.000395"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:48.155410" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:48.155219" elapsed="0.000219"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.155996" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.155601" elapsed="0.000433"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.156694" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.156272" elapsed="0.000452"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.157374" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:48.156899" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.157963" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.157648" elapsed="0.000365"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.152022" elapsed="0.006053"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.145791" elapsed="0.012355"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:48.144014" elapsed="0.014175"/>
</kw>
<doc>Count the routes in example-ipv4-topology and fail if the count is not correct.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:25:48.034867" elapsed="0.123371">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_listening_ipv4_topology_count&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s10-t16" name="Kill_Listening_BGP_Speaker" line="206">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:48.161830" elapsed="0.000242"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:48.161533" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.163245" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.163115" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.163070" elapsed="0.000247"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.168404" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.168293" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.168275" elapsed="0.000199"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.169522" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:48.169126" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.170080" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:48.169763" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:48.170168" elapsed="0.000036"/>
</return>
<msg time="2026-04-17T03:25:48.170331" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:48.168713" elapsed="0.001643"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.177064" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.176944" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.176920" elapsed="0.000237"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.178473" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.178366" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.178346" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.179011" level="INFO">${karaf_connection_index} = 22</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.178692" elapsed="0.000346"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.179455" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.179225" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.180293" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.179990" elapsed="0.000998">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.181194" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:48.181239" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.179648" elapsed="0.001614"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.182143" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.181869" elapsed="0.000911">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.182969" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:48.183015" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.181434" elapsed="0.001603"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.183967" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.183363" elapsed="0.000665">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:48.183136" elapsed="0.000978">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:48.183114" elapsed="0.001034">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.184315" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.184545" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.184399" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.184382" elapsed="0.000237"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.184653" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.187449" elapsed="0.000148"/>
</kw>
<msg time="2026-04-17T03:25:48.187662" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.186160" elapsed="0.001632"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.188069" elapsed="0.000093"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.188422" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.185492" elapsed="0.003115"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.184933" elapsed="0.003738"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.178027" elapsed="0.010730">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:25:48.188860" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.188903" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Kill_Listening_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.177331" elapsed="0.011668"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.189213" elapsed="0.000198"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.189084" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.189062" elapsed="0.000405"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.190433" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.190327" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.190308" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.191065" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.191347" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.190790" elapsed="0.000623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.192459" level="INFO">{1: 22}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.191793" elapsed="0.000773"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.193632" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.192945" elapsed="0.000796"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.194858" elapsed="0.000285"/>
</kw>
<msg time="2026-04-17T03:25:48.195243" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.195288" level="INFO">${old_connection_index} = 22</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.194352" elapsed="0.000958"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.196145" elapsed="0.000195"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.197645" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.197192" elapsed="0.001406">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.196513" elapsed="0.002183"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.199360" elapsed="0.000278"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.198875" elapsed="0.000845"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:48.195619" elapsed="0.004145"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.195386" elapsed="0.004427"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.195367" elapsed="0.004471"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.200730" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.200419" elapsed="0.000338"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:48.200806" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:25:48.200963" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.200063" elapsed="0.000924"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.201162" elapsed="0.000452"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.201903" level="INFO">index=23
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.202003" level="INFO">${karaf_connection_object} = index=23
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.201792" elapsed="0.000236"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.202194" elapsed="0.002557"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.205194" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:48.206234" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.204918" elapsed="0.001702">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.221069" elapsed="0.000413"/>
</kw>
<msg time="2026-04-17T03:25:48.221603" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.219646" elapsed="0.002110"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.221923" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.222105" elapsed="0.000022"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.207590" elapsed="0.014601"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.206981" elapsed="0.015259"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.189926" elapsed="0.032402">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.222717" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.222794" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.176446" elapsed="0.046460">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:48.223018" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.223061" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.170807" elapsed="0.052278"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.223712" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.223445" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.223423" elapsed="0.000365"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:48.170656" elapsed="0.053156"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:48.170471" elapsed="0.053376"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:48.167909" elapsed="0.055998"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:48.162776" elapsed="0.061188"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.162312" elapsed="0.061698"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:48.159265" elapsed="0.064798"/>
</kw>
<kw name="Store_Change_Count">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Change_Count" owner="ChangeCounter">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:48.227763" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${CC_DATA_CHANGE_COUNTER_URL}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.225268" elapsed="0.004192">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.229695" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${count}</var>
<arg>json.loads('${response.text}')["data-change-counter:data-change-counter"]["counter"][0]["count"]</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.229872" elapsed="0.000021"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.229940" elapsed="0.000018"/>
</return>
<doc>GET data change request, assert status 200, return the value.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.224954" elapsed="0.005098">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:48.230176" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.230221" level="INFO">${count} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${count}</var>
<arg>ChangeCounter.Get_Change_Count</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.224548" elapsed="0.005754"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${last_change_count_single}</arg>
<arg>${count}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.230623" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.230381" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.230360" elapsed="0.000344"/>
</if>
<doc>Get the count of changes from BGP change counter. Ignore error or store the value.</doc>
<status status="PASS" start="2026-04-17T03:25:48.224261" elapsed="0.006490"/>
</kw>
<kw name="Kill_BGP_Speaker" owner="BGPSpeaker">
<kw name="Write_Bare_Ctrl_C" owner="RemoteBash">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.232370" level="INFO">${ctrl_c} = </msg>
<var>${ctrl_c}</var>
<arg>chr(int(3))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.231769" elapsed="0.000629"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>${ctrl_c}</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-17T03:25:48.232561" elapsed="0.000324"/>
</kw>
<doc>Construct ctrl+c character and SSH-write it (without endline) to the current SSH connection.
Do not read anything yet.</doc>
<status status="PASS" start="2026-04-17T03:25:48.231498" elapsed="0.001448"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.235912" level="INFO">^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:25:48.233469" elapsed="0.002505"/>
</kw>
<msg time="2026-04-17T03:25:48.236068" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.236132" level="INFO">${message} =  ^C[?2004l[?2004h[?2004l
[?2004h[jenkins@releng-53153-188-1-mininet-ovs-217-0 ~]&gt;</msg>
<var>${status}</var>
<var>${message}</var>
<arg>SSHLibrary.Read_Until_Prompt</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.233132" elapsed="0.003027"/>
</kw>
<kw name="Dump_BGP_Speaker_Logs" owner="BGPSpeaker">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.236810" level="INFO">Executing command 'cat play.py.out'.</msg>
<msg time="2026-04-17T03:25:48.250153" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:48.250390" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${BGPSpeaker__OUTPUT_LOG}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:48.236666" elapsed="0.013782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.251522" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.250858" elapsed="0.000767"/>
</kw>
<doc>Send all output produced by the play.py utility to Robot logs.
This needs to be called if your suite detects play.py crashing and bypasses
Kill_BGP_Speaker in that case otherwise the output of play.py (which most
likely contains clues about why it crashed) will be lost.</doc>
<status status="PASS" start="2026-04-17T03:25:48.236378" elapsed="0.015381"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<status status="PASS" start="2026-04-17T03:25:48.252229" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-17T03:25:48.251923" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.251875" elapsed="0.000555"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.252791" elapsed="0.000051"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>The prompt was not seen within timeout period.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.253238" elapsed="0.000050"/>
</kw>
<doc>Interrupt play.py, fail if no prompt is seen within SSHLibrary timeout.
Also dump the logs with the output the program produced.
This keyword is also suitable for stopping BGP manager.</doc>
<status status="PASS" start="2026-04-17T03:25:48.231025" elapsed="0.022397"/>
</kw>
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.255075" level="INFO">${SuiteFastFail} = False</msg>
<arg>${SuiteFastFail}</arg>
<arg>False</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:48.254624" elapsed="0.000529"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-17T03:25:48.253965" elapsed="0.001268"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.256981" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.256438" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.256412" elapsed="0.000711"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.257338" elapsed="0.000474"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.264900" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.264316" elapsed="0.000623"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:48.265273" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-17T03:25:48.265043" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.265018" elapsed="0.000369"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.265642" elapsed="0.000032"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.265895" elapsed="0.000028"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.266162" elapsed="0.000111"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.266495" elapsed="0.000028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.266687" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.266859" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.267027" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.263861" elapsed="0.003257"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.256143" elapsed="0.011028"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:48.255596" elapsed="0.011617"/>
</kw>
<doc>Abort the Python speaker. Also, attempt to stop failing fast.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-17T03:25:48.158646" elapsed="0.108607"/>
</test>
<test id="s1-s10-t17" name="Store_Results_For_Listening_BGP_Speaker" line="216">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:48.270778" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:48.270508" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.272053" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.271943" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.271924" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.277053" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.276947" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.276928" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.278196" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:48.277790" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.278686" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:48.278391" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:48.278756" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:25:48.278911" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:48.277372" elapsed="0.001563"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.284433" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.284325" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.284305" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.285725" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.285617" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.285598" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.286274" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.285944" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.286692" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.286468" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.287517" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.287247" elapsed="0.001097">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.288531" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:48.288578" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.286882" elapsed="0.001721"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.289485" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.289201" elapsed="0.000945">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.290329" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:48.290375" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.288780" elapsed="0.001619"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.291337" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.290707" elapsed="0.000691">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:48.290479" elapsed="0.000988">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:48.290458" elapsed="0.001041">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.291666" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.291895" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.291751" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.291734" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.292004" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.294645" elapsed="0.000148"/>
</kw>
<msg time="2026-04-17T03:25:48.294861" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.293530" elapsed="0.001458"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.295281" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.295619" elapsed="0.000072"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.292875" elapsed="0.002927"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.292326" elapsed="0.003539"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.285289" elapsed="0.010662">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</status>
</kw>
<msg time="2026-04-17T03:25:48.296054" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.296136" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Store_Results_For_Listening_BGP_Speaker"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.284656" elapsed="0.011506"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.296346" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.296239" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.296220" elapsed="0.000192"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.297235" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.297130" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.297111" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.297596" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.297699" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.297474" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.298183" level="INFO">{1: 23}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.297880" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.298627" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.298385" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.299221" elapsed="0.000262"/>
</kw>
<msg time="2026-04-17T03:25:48.299579" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.299675" level="INFO">${old_connection_index} = 23</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.298832" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.300612" elapsed="0.000195"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.302114" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.301514" elapsed="0.001486">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.300978" elapsed="0.002136"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.303766" elapsed="0.000275"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.303295" elapsed="0.000956"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:48.300006" elapsed="0.004293"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.299777" elapsed="0.004572"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.299758" elapsed="0.004616"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.305269" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.304941" elapsed="0.000354"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:48.305344" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:25:48.305692" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.304599" elapsed="0.001119"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.305882" elapsed="0.000446"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.306613" level="INFO">index=24
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.306712" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.306502" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.306901" elapsed="0.002469"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.309862" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:48.311113" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.309594" elapsed="0.001941">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.329520" elapsed="0.000458"/>
</kw>
<msg time="2026-04-17T03:25:48.330142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.327280" elapsed="0.003085"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.330624" elapsed="0.000035"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.330839" elapsed="0.000028"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.312586" elapsed="0.018367"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.311864" elapsed="0.019162"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.296820" elapsed="0.034637">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.332038" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.332172" elapsed="0.000032"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.283970" elapsed="0.048374">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:48.332627" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.332691" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.279340" elapsed="0.053386"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.333248" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.332847" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.332817" elapsed="0.000532"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:48.279188" elapsed="0.054187"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:48.278992" elapsed="0.054464"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:48.276584" elapsed="0.056939"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:48.271651" elapsed="0.061937"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.271215" elapsed="0.062421"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:48.267957" elapsed="0.065738"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.344019" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:25:48.344338" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:25:48.334439" elapsed="0.009962"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.345131" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:25:48.358321" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:48.358613" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:48.344822" elapsed="0.013835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.359684" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.359021" elapsed="0.000762"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:48.360838" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:25:48.360244" elapsed="0.000668"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:25:48.333875" elapsed="0.027142"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.404601" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:25:48.404852" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:25:48.361981" elapsed="0.042917"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.405616" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:25:48.418572" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:48.418780" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:48.405293" elapsed="0.013530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.420132" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.419182" elapsed="0.001023"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:48.421085" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:25:48.420511" elapsed="0.000674"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:25:48.361300" elapsed="0.059985"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.465507" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:25:48.465756" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:25:48.422218" elapsed="0.043597"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.466657" level="INFO">Executing command 'cat totals-bgp.csv'.</msg>
<msg time="2026-04-17T03:25:48.479548" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:48.479872" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:48.466336" elapsed="0.013594"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.480947" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.480329" elapsed="0.000712"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:48.482138" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-listening-totals-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-listening-totals-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:25:48.481521" elapsed="0.000733"/>
</kw>
<arg>totals-${RESULTS_FILE_NAME}</arg>
<arg>changecount-listening-totals-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:25:48.421569" elapsed="0.060823"/>
</kw>
<kw name="Store_File_To_Workspace">
<kw name="List Files In Directory" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.529356" level="INFO">9 files:
.bash_logout
.bashrc
.profile
bgp_app_peer.py
ipaddr.py
ipv4-routes-template.xml
ipv4-routes-template.xml.oxygen
lf-env.sh
play.py</msg>
<msg time="2026-04-17T03:25:48.529601" level="INFO">${files} = ['.bash_logout', '.bashrc', '.profile', 'bgp_app_peer.py', 'ipaddr.py', 'ipv4-routes-template.xml', 'ipv4-routes-template.xml.oxygen', 'lf-env.sh', 'play.py']</msg>
<var>${files}</var>
<arg>.</arg>
<doc>A wrapper for `List Directory` that returns only files.</doc>
<status status="PASS" start="2026-04-17T03:25:48.483597" elapsed="0.046049"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.530283" level="INFO">Executing command 'cat performance-bgp.csv'.</msg>
<msg time="2026-04-17T03:25:48.542958" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:48.543160" level="INFO">${output_log} = </msg>
<var>${output_log}</var>
<arg>cat ${src_file_name}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:48.529994" elapsed="0.013207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.543973" level="INFO"/>
<arg>${output_log}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.543502" elapsed="0.000542"/>
</kw>
<kw name="Create File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:48.544825" level="INFO" html="true">Created file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-listening-performance-bgp.csv"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/changecount-listening-performance-bgp.csv&lt;/a&gt;'.</msg>
<arg>${dst_file_name}</arg>
<arg>${output_log}</arg>
<doc>Creates a file with the given content and encoding.</doc>
<status status="PASS" start="2026-04-17T03:25:48.544378" elapsed="0.000532"/>
</kw>
<arg>performance-${RESULTS_FILE_NAME}</arg>
<arg>changecount-listening-performance-${RESULTS_FILE_NAME}</arg>
<doc>Store the provided file from the SSH client to workspace.</doc>
<status status="PASS" start="2026-04-17T03:25:48.482737" elapsed="0.062273"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:48.546000" elapsed="0.000397"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.547718" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.547080" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.547055" elapsed="0.000802"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.548107" elapsed="0.000358"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.555402" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.554759" elapsed="0.000682"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-17T03:25:48.555729" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-17T03:25:48.555537" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.555512" elapsed="0.000336"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.556064" elapsed="0.000051"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.556335" elapsed="0.000025"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.556524" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.556697" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.556875" elapsed="0.000023"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.557053" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.557265" elapsed="0.000022"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.554314" elapsed="0.003032"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.546768" elapsed="0.010703"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:48.545533" elapsed="0.011984"/>
</kw>
<doc>Store results for plotting</doc>
<status status="PASS" start="2026-04-17T03:25:48.267475" elapsed="0.290084"/>
</test>
<test id="s1-s10-t18" name="Wait_For_Stable_Ipv4_Topology_After_Listening" line="226">
<kw name="Setup_Test_With_Logging_And_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Fail_This_Fast_On_Previous_Error" owner="FailFast">
<if>
<branch type="IF" condition="'''${SuiteFastFail}'''=='True'">
<kw name="Fail" owner="BuiltIn">
<arg>SKIPPED due to a failure in a previous fundamental test case.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.562188" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.561900" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.561877" elapsed="0.000396"/>
</if>
<doc>Mark (immediately) this test case as failed when fast-fail is enabled in suite.</doc>
<status status="PASS" start="2026-04-17T03:25:48.561693" elapsed="0.000629"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.563467" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.563355" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.563336" elapsed="0.000202"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.568814" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.568703" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.568682" elapsed="0.000212"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.570045" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:48.569573" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.570562" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:48.570260" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:48.570632" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:25:48.570815" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:48.569151" elapsed="0.001700"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.576717" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.576608" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.576588" elapsed="0.000196"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.578122" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.577991" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.577972" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.578706" level="INFO">${karaf_connection_index} = 24</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.578345" elapsed="0.000388"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.579134" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.578899" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.580169" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.579732" elapsed="0.001136">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.581128" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:48.581198" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.579372" elapsed="0.001852"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.582064" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.581757" elapsed="0.001065">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.583077" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:48.583150" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.581404" elapsed="0.001771"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.584087" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.583481" elapsed="0.000686">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:48.583254" elapsed="0.001037">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:48.583234" elapsed="0.001092">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.584492" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.584724" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.584577" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.584561" elapsed="0.000238"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.584831" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.587645" elapsed="0.000170"/>
</kw>
<msg time="2026-04-17T03:25:48.587884" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.586462" elapsed="0.001551"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.588310" elapsed="0.000082"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.588701" elapsed="0.000079"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.585782" elapsed="0.003112"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.585119" elapsed="0.003840"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.577684" elapsed="0.011365">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</status>
</kw>
<msg time="2026-04-17T03:25:48.589188" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.589234" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Wait_For_Stable_Ipv4_Topology_After_Listening"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.576943" elapsed="0.012316"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.589501" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.589367" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.589338" elapsed="0.000237"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.590481" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.590366" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.590340" elapsed="0.000210"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.590836" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.590955" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.590710" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.591555" level="INFO">{1: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.591267" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.592054" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.591759" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.592678" elapsed="0.000258"/>
</kw>
<msg time="2026-04-17T03:25:48.593033" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.593078" level="INFO">${old_connection_index} = 24</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.592307" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.594034" elapsed="0.000218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.597134" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.595020" elapsed="0.003125">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.594426" elapsed="0.003822"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.599013" elapsed="0.000365"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.598475" elapsed="0.001042"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:48.593437" elapsed="0.006128"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.593209" elapsed="0.006406"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.593188" elapsed="0.006453"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.600583" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.600266" elapsed="0.000344"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:48.600659" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:25:48.600839" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.599860" elapsed="0.001018"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.601057" elapsed="0.000507"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.601940" level="INFO">index=25
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.602046" level="INFO">${karaf_connection_object} = index=25
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.601802" elapsed="0.000271"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.602248" elapsed="0.002430"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.605206" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:48.606376" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.604893" elapsed="0.001891">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.621542" elapsed="0.000472"/>
</kw>
<msg time="2026-04-17T03:25:48.622122" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.620114" elapsed="0.002190"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.622476" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.622693" elapsed="0.000033"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.607822" elapsed="0.014987"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.607217" elapsed="0.015643"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.589992" elapsed="0.032954">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.623874" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.623952" elapsed="0.000019"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.576232" elapsed="0.047856">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:48.624242" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.624286" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.571284" elapsed="0.053027"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.624662" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.624393" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.624373" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:48.571131" elapsed="0.053635"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:48.570930" elapsed="0.053876"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:48.568286" elapsed="0.056664"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:48.563030" elapsed="0.062000"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.562485" elapsed="0.062593"/>
</kw>
<doc>Test case setup which skips on previous failure. If not, logs test case name to Karaf log.
Recommended to be used as the default test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:48.558537" elapsed="0.066632"/>
</kw>
<kw name="Wait_For_Change_Count_To_Become_Stable" owner="ChangeCounter">
<kw name="Create_Limiting_Stability_Safe_Stateful_Validator_From_Value_To_Overcome" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.639683" level="INFO">${valid_minimum} = 2</msg>
<var>${valid_minimum}</var>
<arg>str(int(${maximum_invalid}) + 1)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.639317" elapsed="0.000393"/>
</kw>
<kw name="Closure_From_Keyword_And_Arguments" owner="ScalarClosures">
<return>
<value>${keyword}</value>
<value>${args}</value>
<value>${kwargs}</value>
<status status="PASS" start="2026-04-17T03:25:48.640245" elapsed="0.000031"/>
</return>
<msg time="2026-04-17T03:25:48.640461" level="INFO">${validator} = ['WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'valid_minimum': '2'}]</msg>
<var>${validator}</var>
<arg>WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword</arg>
<arg>state_holder</arg>
<arg>data_holder</arg>
<arg>valid_minimum=${valid_minimum}</arg>
<doc>Turn keyword with given arguments into a scalar closure.</doc>
<status status="PASS" start="2026-04-17T03:25:48.639924" elapsed="0.000564"/>
</kw>
<return>
<value>${validator}</value>
<status status="PASS" start="2026-04-17T03:25:48.640541" elapsed="0.000027"/>
</return>
<msg time="2026-04-17T03:25:48.640691" level="INFO">${validator} = ['WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword', ['state_holder', 'data_holder'], {'valid_minimum': '2'}]</msg>
<var>${validator}</var>
<arg>maximum_invalid=${count_to_overcome}</arg>
<doc>Helper function to use if maximum invalid value (instead of minimum valid) is known.</doc>
<status status="PASS" start="2026-04-17T03:25:48.638925" elapsed="0.001798"/>
</kw>
<kw name="Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success" owner="WaitUtils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.642388" level="INFO">${tmp} = 1</msg>
<var>${tmp}</var>
<arg>int(${count})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.641952" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.643068" level="INFO">count=1</msg>
<arg>count=${tmp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.642746" elapsed="0.000400"/>
</kw>
<kw name="WaitUtils__Check_Sanity_And_Compute_Derived_Times" owner="WaitUtils">
<if>
<branch type="IF" condition="int(${count}) &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>\${count} is ${count} and not at least 1.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.644168" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.643914" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.643893" elapsed="0.000387"/>
</if>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:25:48.644707" level="INFO">${period_in_seconds} = 60.0</msg>
<var>${period_in_seconds}</var>
<arg>${period}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:25:48.644443" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${period_in_seconds} &lt;= 0.0">
<kw name="Fail" owner="BuiltIn">
<arg>\${period} ${period} has to be positive.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.645087" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.644840" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.644813" elapsed="0.000389"/>
</if>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:25:48.645541" level="INFO">${date_now} = 2026-04-17 03:25:48.645</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:25:48.645351" elapsed="0.000224"/>
</kw>
<kw name="Convert Time" owner="DateTime">
<msg time="2026-04-17T03:25:48.646112" level="INFO">${timeout_in_seconds} = 420.0</msg>
<var>${timeout_in_seconds}</var>
<arg>${timeout}</arg>
<arg>result_format=number</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="PASS" start="2026-04-17T03:25:48.645780" elapsed="0.000363"/>
</kw>
<kw name="Add Time To Date" owner="DateTime">
<msg time="2026-04-17T03:25:48.646663" level="INFO">${date_deadline} = 2026-04-17 03:32:48.645</msg>
<var>${date_deadline}</var>
<arg>${date_now}</arg>
<arg>${timeout_in_seconds}</arg>
<doc>Adds time to date and returns the resulting date.</doc>
<status status="PASS" start="2026-04-17T03:25:48.646307" elapsed="0.000384"/>
</kw>
<return>
<value>${timeout_in_seconds}</value>
<value>${period_in_seconds}</value>
<value>${date_deadline}</value>
<status status="PASS" start="2026-04-17T03:25:48.646741" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:25:48.646992" level="INFO">${timeout_in_seconds} = 420.0</msg>
<msg time="2026-04-17T03:25:48.647039" level="INFO">${period_in_seconds} = 60.0</msg>
<msg time="2026-04-17T03:25:48.647081" level="INFO">${date_deadline} = 2026-04-17 03:32:48.645</msg>
<var>${timeout_in_seconds}</var>
<var>${period_in_seconds}</var>
<var>${date_deadline}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${count}</arg>
<doc>Common checks for argument values. Return times in seconds and deadline date implied by timeout time.</doc>
<status status="PASS" start="2026-04-17T03:25:48.643441" elapsed="0.003680"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.647763" level="INFO">${maximum_sleeps} = 7</msg>
<var>${maximum_sleeps}</var>
<arg>math.ceil(${timeout_in_seconds} / ${period_in_seconds})</arg>
<arg>modules=math</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.647298" elapsed="0.000504"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.648285" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.647996" elapsed="0.000316"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.648758" level="INFO">${state} = 1</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.648474" elapsed="0.000310"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline" owner="WaitUtils">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.650837" level="INFO">${result} = No result yet.</msg>
<var>${result}</var>
<arg>No result yet.</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.650571" elapsed="0.000300"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.651391" level="INFO">${state} = 1</msg>
<var>${state}</var>
<arg>${initial_state}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.651037" elapsed="0.000381"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.652150" level="INFO">${sleeps} = 0</msg>
<var>${sleeps}</var>
<arg>${count} - 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.651582" elapsed="0.000608"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="WaitUtils__Is_Deadline_Reachable" owner="WaitUtils">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-17T03:25:48.653767" level="INFO">${date_now} = 2026-04-17 03:25:48.654</msg>
<var>${date_now}</var>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-17T03:25:48.653601" elapsed="0.000194"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<msg time="2026-04-17T03:25:48.654343" level="INFO">${time_deadline} = 419.991</msg>
<var>${time_deadline}</var>
<arg>${date_deadline}</arg>
<arg>${date_now}</arg>
<arg>result_format=number</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="PASS" start="2026-04-17T03:25:48.653963" elapsed="0.000414"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.655014" level="INFO">${time_minimal} = 0.0</msg>
<var>${time_minimal}</var>
<arg>int(${sleeps_left}) * ${period_in_seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.654582" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="${time_minimal} &gt;= ${time_deadline}">
<kw name="Fail" owner="BuiltIn">
<arg>Not possible to succeed within the deadline. ${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.655444" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.655145" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.655118" elapsed="0.000422"/>
</if>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Compute time to be wasted in sleeps, compare to deadline. Fail with message when needed.</doc>
<status status="PASS" start="2026-04-17T03:25:48.652905" elapsed="0.002703"/>
</kw>
<msg time="2026-04-17T03:25:48.655713" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.655758" level="INFO">${message} = None</msg>
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.652374" elapsed="0.003408"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.655981" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.655869" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.655846" elapsed="0.000208"/>
</if>
<for flavor="IN RANGE">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Run_Closure_As_Is" owner="ScalarClosures">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.658817" level="INFO">${keyword} = Get_Change_Count</msg>
<msg time="2026-04-17T03:25:48.658870" level="INFO">${args} = []</msg>
<msg time="2026-04-17T03:25:48.658921" level="INFO">${kwargs} = {}</msg>
<var>${keyword}</var>
<var>${args}</var>
<var>${kwargs}</var>
<arg>${closure}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.658473" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword" owner="BuiltIn">
<kw name="Get_Change_Count" owner="ChangeCounter">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:48.663415" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${CC_DATA_CHANGE_COUNTER_URL}</arg>
<arg>expected_status=200</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.660284" elapsed="0.005325">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.665891" elapsed="0.000049"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${count}</var>
<arg>json.loads('${response.text}')["data-change-counter:data-change-counter"]["counter"][0]["count"]</arg>
<arg>modules=json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.666198" elapsed="0.000047"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.666329" elapsed="0.000020"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>GET data change request, assert status 200, return the value.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.659640" elapsed="0.006877">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var>${result}</var>
<arg>${keyword}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Executes the given keyword with the given arguments.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.659149" elapsed="0.007428">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.666637" elapsed="0.000018"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Run the keyword from closure without affecting arguments.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.658084" elapsed="0.008656">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:48.666894" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.666941" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.657539" elapsed="0.009428"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.667154" elapsed="0.031511"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:48.699669" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.699538" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.699513" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.700272" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.699897" elapsed="0.000448">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:48.699126" elapsed="0.001334">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.700522" elapsed="0.000018"/>
</return>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.657124" elapsed="0.043500">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:48.700733" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.700778" level="INFO">${data} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError...</msg>
<var>${status}</var>
<var>${data}</var>
<arg>ScalarClosures.Run_Keyword_And_Collect_Garbage</arg>
<arg>ScalarClosures.Run_Closure_As_Is</arg>
<arg>${getter}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.656647" elapsed="0.044156"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Getter failed: ${data}</value>
<status status="PASS" start="2026-04-17T03:25:48.700988" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-17T03:25:48.700880" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.700862" elapsed="0.000245"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.701328" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.701470" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.701434" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.701418" elapsed="0.000118"/>
</if>
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments</arg>
<arg>${safe_validator}</arg>
<arg>${state}</arg>
<arg>${data}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.701784" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>Validator failed: ${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.701924" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.701888" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.701872" elapsed="0.000119"/>
</if>
<if>
<branch type="IF" condition="${sleeps_left} &lt;= 0">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.702075" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.702041" elapsed="0.000104"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.702026" elapsed="0.000141"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<var>${status}</var>
<var>${message}</var>
<arg>WaitUtils__Is_Deadline_Reachable</arg>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>sleeps_left=${sleeps_left}</arg>
<arg>message=Last result: ${result}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.702320" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' != '''PASS'''">
<return>
<value>${state}</value>
<value>${status}</value>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.702453" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.702419" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.702402" elapsed="0.000117"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.702664" elapsed="0.000021"/>
</kw>
<var name="${sleeps_left}">0</var>
<status status="PASS" start="2026-04-17T03:25:48.656490" elapsed="0.046228"/>
</iter>
<var>${sleeps_left}</var>
<value>${count}-1</value>
<value>-1</value>
<value>-1</value>
<status status="PASS" start="2026-04-17T03:25:48.656109" elapsed="0.046710"/>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.702979" elapsed="0.000022"/>
</kw>
<msg time="2026-04-17T03:25:48.703220" level="INFO">${state} = 1</msg>
<msg time="2026-04-17T03:25:48.703265" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.703307" level="INFO">${result} = Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by New...</msg>
<var>${state}</var>
<var>${status}</var>
<var>${result}</var>
<arg>date_deadline=${date_deadline}</arg>
<arg>period_in_seconds=${period_in_seconds}</arg>
<arg>count=${count}</arg>
<arg>getter=${getter}</arg>
<arg>safe_validator=${safe_validator}</arg>
<arg>initial_state=${state}</arg>
<doc>Pass only if consecutively 1 times in a row with 60 between attempts: ${getter} creates data and ${safe_validator} passes. Validator updates its state even if it reports failure. Always return validator state, status and message.</doc>
<status status="PASS" start="2026-04-17T03:25:48.649736" elapsed="0.053596"/>
</kw>
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.703528" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.703421" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.703403" elapsed="0.000189"/>
</if>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.704883" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:25:48.704957" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.704611" elapsed="0.000408">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:25:48.705148" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.705195" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.704262" elapsed="0.000957"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.705416" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.705292" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.705274" elapsed="0.000224"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:25:48.705921" level="INFO">@{message_chunks} = [ Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by N...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:25:48.705667" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.709466" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:25:48.709545" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.706646" elapsed="0.002968">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:25:48.709720" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.709766" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.706181" elapsed="0.003611"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="PASS" start="2026-04-17T03:25:48.709975" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-17T03:25:48.709867" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.709848" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.710229" elapsed="0.000023"/>
</kw>
<arg>${result}</arg>
<arg>Not possible to succeed within the deadline.</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="PASS" start="2026-04-17T03:25:48.703863" elapsed="0.006526"/>
</kw>
<kw name="Propagate_Fail_If_Message_Starts_With_Prefix" owner="WaitUtils">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.711731" level="INFO">Length is 337.</msg>
<msg time="2026-04-17T03:25:48.711836" level="FAIL">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</msg>
<arg>${message}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.711428" elapsed="0.000499">'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))' should be empty.</status>
</kw>
<msg time="2026-04-17T03:25:48.712076" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.712138" level="INFO">${result} = 'Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by Ne...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.711063" elapsed="0.001101"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>Got empty message.</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.712344" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.712237" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.712219" elapsed="0.000190"/>
</if>
<kw name="Split String" owner="String">
<msg time="2026-04-17T03:25:48.712817" level="INFO">@{message_chunks} = [  | : ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnecti...</msg>
<var>@{message_chunks}</var>
<arg>${message}</arg>
<arg>${prefix}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-04-17T03:25:48.712558" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.716015" level="INFO">Length is 0.</msg>
<arg>${message_chunks[0]}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-17T03:25:48.713473" elapsed="0.002589"/>
</kw>
<msg time="2026-04-17T03:25:48.716192" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.716258" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${message_chunks[0]}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.713048" elapsed="0.003245"/>
</kw>
<if>
<branch type="IF" condition="'${status}' != 'PASS'">
<return>
<value>${message} does not start with ${prefix}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.716480" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.716373" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.716353" elapsed="0.000192"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.717011" level="FAIL">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.716693" elapsed="0.000444">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${result}</arg>
<arg>Getter failed</arg>
<doc>Helper keyword to distinguish escalable failures by their prefix. If it is escalable, Fail without changing the message; otherwise Return comment.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.710675" elapsed="0.006584">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Sleep" owner="BuiltIn">
<arg>${period_in_seconds} s</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.717430" elapsed="0.000022"/>
</kw>
<var name="${try}">1</var>
<status status="FAIL" start="2026-04-17T03:25:48.649195" elapsed="0.068305">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${try}</var>
<value>1</value>
<value>${maximum_sleeps}+2</value>
<status status="FAIL" start="2026-04-17T03:25:48.648839" elapsed="0.068719">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<kw name="Fail" owner="BuiltIn">
<arg>Logic error, we should have returned before.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.717722" elapsed="0.000021"/>
</kw>
<var>${result}</var>
<arg>timeout=${timeout}</arg>
<arg>period=${period}</arg>
<arg>count=${repetitions}</arg>
<arg>getter=${ChangeCounter__getter}</arg>
<arg>safe_validator=${validator}</arg>
<arg>initial_state=${count_to_overcome}</arg>
<doc>Analogue of Wait Until Keyword Succeeds, but it passes state of validator around and exits early on getter failure. Calls GASSVHTSCBD to verify data is "stable".</doc>
<status status="FAIL" start="2026-04-17T03:25:48.641165" elapsed="0.076662">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${result}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.717899" elapsed="0.000022"/>
</return>
<arg>timeout=${bgp_emptying_timeout}</arg>
<arg>period=${CHECK_PERIOD_CHANGE_COUNT_SINGLE}</arg>
<arg>repetitions=${REPETITIONS_CHANGE_COUNT_SINGLE}</arg>
<arg>count_to_overcome=${last_change_count_single}</arg>
<doc>Each ${period} get count. After 1 of constant value above ${count_to_overcome} within ${timeout}, Return validator output. Fail early on getter error.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.638232" elapsed="0.079805">Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.719506" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:48.719153" elapsed="0.000404"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:48.718760" elapsed="0.000848"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.720543" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.720083" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.720065" elapsed="0.000568"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.720787" elapsed="0.000428"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.726680" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.726268" elapsed="0.000438"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:48.726919" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.726780" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.726762" elapsed="0.000218"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.727448" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.727149" elapsed="0.000325"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:48.727901" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Wait_For_Stable_Ipv4_Topology_After_Listening</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.727641" elapsed="0.000286"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:48.728289" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:48.728103" elapsed="0.000212"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.728811" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.728471" elapsed="0.000367"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.729342" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.728995" elapsed="0.000375"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.729956" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:48.729526" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.730472" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.730180" elapsed="0.000340"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.725876" elapsed="0.004698"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.719868" elapsed="0.010755"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:48.718404" elapsed="0.012260"/>
</kw>
<doc>Wait until example-ipv4-topology becomes stable again.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:25:48.557907" elapsed="0.172797">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_wait_for_stable_ipv4_topology_after_listening&amp;order=bug_status"

Getter failed: ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/data-change-counter:data-change-counter?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s10-t19" name="Check_For_Empty_Ipv4_Topology_After_Listening" line="235">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:48.734209" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:48.733884" elapsed="0.000587"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.735469" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.735360" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.735341" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.740411" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.740307" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.740288" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.741503" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:48.741123" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.741990" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:48.741695" elapsed="0.000321"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:48.742060" elapsed="0.000045"/>
</return>
<msg time="2026-04-17T03:25:48.742234" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:48.740711" elapsed="0.001547"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.747906" elapsed="0.000161"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.747798" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.747779" elapsed="0.000367"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.749376" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.749270" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.749252" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.749894" level="INFO">${karaf_connection_index} = 25</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.749593" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.750321" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.750083" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.751133" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.750859" elapsed="0.000948">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.751993" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:48.752039" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.750512" elapsed="0.001550"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.752840" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.752597" elapsed="0.000918">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.753700" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:48.753745" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.752251" elapsed="0.001518"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.754700" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.754069" elapsed="0.000692">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:48.753844" elapsed="0.000984">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:48.753824" elapsed="0.001036">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.755026" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.755275" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.755127" elapsed="0.000237"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.755109" elapsed="0.000281"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.755424" elapsed="0.000016"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.758145" elapsed="0.000194"/>
</kw>
<msg time="2026-04-17T03:25:48.758425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.756878" elapsed="0.001727"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.759009" elapsed="0.000127"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.759536" elapsed="0.000110"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.756252" elapsed="0.003554"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.755697" elapsed="0.004210"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.748917" elapsed="0.011116">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</status>
</kw>
<msg time="2026-04-17T03:25:48.760213" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.760277" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Check_For_Empty_Ipv4_Topology_After_Listening"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.748306" elapsed="0.012006"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.760571" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.760424" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.760398" elapsed="0.000260"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.762089" elapsed="0.000133"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.761932" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.761904" elapsed="0.000399"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.762716" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.762858" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.762543" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.763529" level="INFO">{1: 25}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.763149" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.764224" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.763838" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.765063" elapsed="0.000366"/>
</kw>
<msg time="2026-04-17T03:25:48.765564" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.765635" level="INFO">${old_connection_index} = 25</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.764513" elapsed="0.001157"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.766685" elapsed="0.000199"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.767978" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.767564" elapsed="0.001332">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.767059" elapsed="0.001990"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.769723" elapsed="0.000277"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.769249" elapsed="0.000838"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:48.766042" elapsed="0.004133"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.765769" elapsed="0.004456"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.765748" elapsed="0.004502"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.771161" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.770827" elapsed="0.000417"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:48.771299" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:25:48.771463" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.770473" elapsed="0.001016"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.771661" elapsed="0.000448"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.772405" level="INFO">index=26
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.772507" level="INFO">${karaf_connection_object} = index=26
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.772289" elapsed="0.000245"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.772695" elapsed="0.002525"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.775664" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:48.777195" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.775395" elapsed="0.002202">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.791622" elapsed="0.000696"/>
</kw>
<msg time="2026-04-17T03:25:48.792408" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.790223" elapsed="0.002330"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.792720" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.792888" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.778597" elapsed="0.014404"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.777910" elapsed="0.015139"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.761497" elapsed="0.031653">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.793516" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.793590" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.747455" elapsed="0.046242">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:48.793806" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.793849" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.742635" elapsed="0.051236"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.794423" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.793951" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.793932" elapsed="0.000569"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:48.742488" elapsed="0.052038"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:48.742314" elapsed="0.052245"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:48.739937" elapsed="0.054687"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:48.735051" elapsed="0.059630"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.734626" elapsed="0.060281"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:48.731680" elapsed="0.063279"/>
</kw>
<kw name="Check_Ipv4_Topology_Is_Empty" owner="PrefixCounting">
<kw name="Check_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Run_Keyword_And_Collect_Garbage" owner="ScalarClosures">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Ipv4_Topology_Count" owner="PrefixCounting">
<kw name="Get_Ipv4_Topology" owner="PrefixCounting">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:48.801311" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${PC_NW_TOPOLOGY}=${topology}?content=nonconfig</arg>
<arg>expected_status=anything</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.798276" elapsed="0.004709">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${response.status_code} != 200">
<kw name="Fail" owner="BuiltIn">
<arg>Get on ${topology} returned status code ${response.status_code} with message: ${response.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.803289" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.803104" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.803069" elapsed="0.000298"/>
</if>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.803402" elapsed="0.000016"/>
</return>
<var>${topology}</var>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>GET the example-ipv4-topology data, check status is 200, return the topology data.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.797667" elapsed="0.005844">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${prefix_count}</var>
<arg>len(re.findall('"prefix":"', '''${topology}'''))</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.803690" elapsed="0.000022"/>
</kw>
<return>
<value>${prefix_count}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.803758" elapsed="0.000014"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Get topology. If not fail, return number of prefixes in the topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.797131" elapsed="0.006724">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<msg time="2026-04-17T03:25:48.803964" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.804008" level="INFO">${message} = ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Cau...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>${keyword_to_gc}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.796611" elapsed="0.007421"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<arg>gc.collect()</arg>
<arg>modules=gc</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.804212" elapsed="0.031080"/>
</kw>
<kw name="Propagate_Fail" owner="ScalarClosures">
<if>
<branch type="IF" condition="'''${status}''' == '''PASS'''">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:48.836693" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.836508" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.836473" elapsed="0.000324"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.837594" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${message}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.837087" elapsed="0.000602">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>status=${status}</arg>
<arg>message=${message}</arg>
<doc>If FAIL is PASS do nothing. Otherwise Fail with ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused")).</doc>
<status status="FAIL" start="2026-04-17T03:25:48.835897" elapsed="0.001940">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.837920" elapsed="0.000022"/>
</return>
<var>${actual_count}</var>
<arg>Get_Ipv4_Topology_Count</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Runs Keyword, but performs garbage collection before pass/fail.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.796131" elapsed="0.041924">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${actual_count}</arg>
<arg>${expected_count}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.838329" elapsed="0.000033"/>
</kw>
<arg>0</arg>
<arg>session=${session}</arg>
<arg>topology=${topology}</arg>
<doc>Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.795587" elapsed="0.042905">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<doc>Example_Ipv4_Topology has to give status 200 with zero prefixes.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.795238" elapsed="0.043468">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.840346" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:48.839995" elapsed="0.000396"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:48.839579" elapsed="0.000865"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.841372" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.840957" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.840936" elapsed="0.000525"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.841619" elapsed="0.000325"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.847642" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.847212" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:48.847906" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.847747" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.847728" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.848450" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.848146" elapsed="0.000331"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:48.848961" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Check_For_Empty_Ipv4_Topology_After_Listening</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.848641" elapsed="0.000350"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:48.849396" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:48.849187" elapsed="0.000237"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.849982" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.849604" elapsed="0.000412"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.850524" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.850209" elapsed="0.000343"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.851178" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:48.850715" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.851759" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.851397" elapsed="0.000412"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.846863" elapsed="0.005010"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.840703" elapsed="0.011281"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:48.839152" elapsed="0.012876"/>
</kw>
<doc>Example-ipv4-topology should be empty now.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-17T03:25:48.731105" elapsed="0.120965">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_check_for_empty_ipv4_topology_after_listening&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/network-topology:network-topology/topology=example-ipv4-topology?content=nonconfig (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s10-t20" name="Restore_Data_Change_Counter_Configuration" line="241">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:48.855509" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:48.855242" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.856760" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.856651" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.856633" elapsed="0.000194"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.861936" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.861807" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.861789" elapsed="0.000230"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.863053" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:48.862670" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.863603" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:48.863289" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:48.863674" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:25:48.863832" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:48.862288" elapsed="0.001569"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.869709" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.869600" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.869578" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.871055" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.870949" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.870930" elapsed="0.000224"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.871638" level="INFO">${karaf_connection_index} = 26</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.871306" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.872112" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.871854" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.873200" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.872777" elapsed="0.001137">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.874121" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:48.874169" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.872309" elapsed="0.001885"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.874972" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.874725" elapsed="0.000907">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:48.875818" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:48.875865" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.874369" elapsed="0.001520"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.876861" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.876220" elapsed="0.000774">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:48.875968" elapsed="0.001099">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:48.875948" elapsed="0.001170">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.877290" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.877525" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.877377" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:48.877359" elapsed="0.000241"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.877632" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.880176" elapsed="0.000146"/>
</kw>
<msg time="2026-04-17T03:25:48.880397" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.879105" elapsed="0.001423"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.880822" elapsed="0.000096"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.881209" elapsed="0.000076"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.878467" elapsed="0.002930"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.877909" elapsed="0.003556"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.870631" elapsed="0.010920">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</status>
</kw>
<msg time="2026-04-17T03:25:48.881656" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.881701" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Restore_Data_Change_Counter_Configuration"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.869949" elapsed="0.011777"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.881920" elapsed="0.000283"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.881804" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.881783" elapsed="0.000481"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.883089" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:48.882981" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.882962" elapsed="0.000213"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.883460" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.883563" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.883335" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.884009" level="INFO">{1: 26}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.883748" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.884542" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.884292" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.885177" elapsed="0.000258"/>
</kw>
<msg time="2026-04-17T03:25:48.885532" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:48.885579" level="INFO">${old_connection_index} = 26</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.884749" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.886432" elapsed="0.000193"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.887691" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.887293" elapsed="0.001356">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.886797" elapsed="0.001953"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.889484" elapsed="0.000281"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.888988" elapsed="0.000862"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:48.885900" elapsed="0.003997"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.885677" elapsed="0.004269"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.885659" elapsed="0.004312"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:48.890842" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.890531" elapsed="0.000342"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:48.890926" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:25:48.891080" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.890199" elapsed="0.000922"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.891283" elapsed="0.000424"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.891991" level="INFO">index=27
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:48.892122" level="INFO">${karaf_connection_object} = index=27
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:48.891882" elapsed="0.000269"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.892305" elapsed="0.002662"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:48.895522" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:48.896929" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.895212" elapsed="0.002109">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:48.912005" elapsed="0.000442"/>
</kw>
<msg time="2026-04-17T03:25:48.912551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.910439" elapsed="0.002276"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.912921" elapsed="0.000025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.913192" elapsed="0.000025"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:48.898139" elapsed="0.015146"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:48.897609" elapsed="0.015726"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.882687" elapsed="0.030739">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.913835" elapsed="0.000032"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:48.913926" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.869254" elapsed="0.044790">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:48.914185" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:48.914231" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.864251" elapsed="0.050003"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.914611" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.914341" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.914319" elapsed="0.000433"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:48.864086" elapsed="0.050692"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:48.863912" elapsed="0.050903"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:48.861446" elapsed="0.053442"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:48.856367" elapsed="0.058586"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:48.855923" elapsed="0.059078"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:48.853054" elapsed="0.062004"/>
</kw>
<kw name="Reconfigure_Topology_Name" owner="ChangeCounter">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.920827" level="INFO">&amp;{mapping} = { DEVICE_NAME=controller-config | TOPOLOGY_NAME=example-linkstate-topology }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>TOPOLOGY_NAME=${topology_name}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.920310" elapsed="0.000576"/>
</kw>
<kw name="Put_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Put_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.957441" level="INFO">${file_path_stream} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:48.956934" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:25:48.958668" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.958342" elapsed="0.000416">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-17T03:25:48.958871" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:25:48.957863" elapsed="0.001038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.959620" level="INFO">${file_path} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:48.959146" elapsed="0.000512"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:48.960039" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/location.uri"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-17T03:25:48.960254" level="INFO">${template} = rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-17T03:25:48.959868" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.960744" level="INFO">rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.960464" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.962033" level="INFO">mapping: {'DEVICE_NAME': 'controller-config', 'TOPOLOGY_NAME': 'example-linkstate-topology'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:48.961728" elapsed="0.000352"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.962583" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.962283" elapsed="0.000338"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.963431" level="INFO">${value} = controller-config</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:25:48.963070" elapsed="0.000387"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:48.964612" level="INFO">${encoded} = controller-config</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.964074" elapsed="0.000567"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:25:48.964709" elapsed="0.000042"/>
</return>
<msg time="2026-04-17T03:25:48.964937" level="INFO">${encoded_value} = controller-config</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:25:48.963696" elapsed="0.001272"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.965196" elapsed="0.000296"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">controller-config</var>
<status status="PASS" start="2026-04-17T03:25:48.962883" elapsed="0.002660"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.966211" level="INFO">${value} = example-linkstate-topology</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:25:48.965829" elapsed="0.000412"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:48.967388" level="INFO">${encoded} = example-linkstate-topology</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.966896" elapsed="0.000522"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:25:48.967477" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:25:48.967640" level="INFO">${encoded_value} = example-linkstate-topology</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:25:48.966536" elapsed="0.001130"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:48.967858" elapsed="0.000267"/>
</kw>
<var name="${key}">TOPOLOGY_NAME</var>
<var name="${value}">example-linkstate-topology</var>
<status status="PASS" start="2026-04-17T03:25:48.965670" elapsed="0.002508"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-17T03:25:48.962681" elapsed="0.005537"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-17T03:25:48.968269" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:25:48.968440" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'controller-config', 'TOPOLOGY_NAME': 'example-linkstate-topology'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-17T03:25:48.961369" elapsed="0.007109"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:48.960952" elapsed="0.007566"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.968722" elapsed="0.000284"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:48.968548" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:48.960922" elapsed="0.008149"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:48.969814" level="INFO">${final_text} = rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:48.969270" elapsed="0.000572"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-17T03:25:48.969900" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="PASS" start="2026-04-17T03:25:48.956042" elapsed="0.013989"/>
</kw>
<msg time="2026-04-17T03:25:48.970089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:48.942594" elapsed="0.027606"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.984896" elapsed="0.000072"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:48.999234" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.012848" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.013198" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.013396" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.013925" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.013735" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:49.013706" elapsed="0.000305"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.014177" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.014485" elapsed="0.000032"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.014681" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-17T03:25:49.013647" elapsed="0.001089"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.013481" elapsed="0.001283"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.014919" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.014999" elapsed="0.000017"/>
</return>
<msg time="2026-04-17T03:25:49.015207" level="INFO">${uri} = rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-17T03:25:48.938062" elapsed="0.077179"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.044524" level="INFO">${file_path_stream} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:49.043998" elapsed="0.000571"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:25:49.045557" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter.vanadium/data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.045279" elapsed="0.000355">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter.vanadium/data.xml' does not exist.</status>
</kw>
<msg time="2026-04-17T03:25:49.045734" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:25:49.044879" elapsed="0.000881"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.046366" level="INFO">${file_path} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:49.045945" elapsed="0.000449"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:49.046775" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/data.xml"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-17T03:25:49.046950" level="INFO">${template} = &lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;$TOPOLOGY_NAME&lt;/topology-...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-17T03:25:49.046604" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.047474" level="INFO">&lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;$TOPOLOGY_NAME&lt;/topology-name&gt;
&lt;/data-change-counter-config&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.047176" elapsed="0.000349"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-17T03:25:49.048033" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.047609" elapsed="0.000511"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.048650" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'controller-config', 'TOPOLOGY_NAME': 'example-linkstate-topology'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:49.048304" elapsed="0.000386"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:49.048149" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.047584" elapsed="0.001205"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.049655" level="INFO">${final_text} = &lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;example-linkstate-topolog...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:49.048968" elapsed="0.000717"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-17T03:25:49.049738" elapsed="0.000037"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="PASS" start="2026-04-17T03:25:49.043236" elapsed="0.006643"/>
</kw>
<msg time="2026-04-17T03:25:49.050021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.029331" elapsed="0.020790"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.064209" elapsed="0.000059"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.077467" elapsed="0.000055"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.089948" elapsed="0.000043"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.090226" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.090418" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.090853" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.090696" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:49.090677" elapsed="0.000260"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.091087" elapsed="0.000037"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.091277" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.091446" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-17T03:25:49.090636" elapsed="0.000863"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.090502" elapsed="0.001026"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.091681" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.091759" elapsed="0.000018"/>
</return>
<msg time="2026-04-17T03:25:49.091914" level="INFO">${data} = &lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;example-linkstate-topolog...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-17T03:25:49.026243" elapsed="0.065701"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:25:49.093436" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.093135" elapsed="0.000377">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/change_counter/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-17T03:25:49.093607" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:25:49.092716" elapsed="0.000915"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.094040" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.093700" elapsed="0.000414"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.094630" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:49.094323" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:49.094140" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.093682" elapsed="0.001031"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.097109" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:49.094871" elapsed="0.002265"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-17T03:25:49.097188" elapsed="0.000033"/>
</return>
<msg time="2026-04-17T03:25:49.097348" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/../variables/bgpuser/change_counter/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-17T03:25:49.092327" elapsed="0.005046"/>
</kw>
<kw name="Put_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.098807" level="INFO">rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.098545" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.099314" level="INFO">&lt;data-change-counter-config xmlns="urn:opendaylight:params:xml:ns:yang:bgpcep:data-change-counter-config"&gt;
    &lt;counter-id&gt;data-change-counter&lt;/counter-id&gt;
    &lt;topology-name&gt;example-linkstate-topology&lt;/topology-name&gt;
&lt;/data-change-counter-config&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.099046" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.099761" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.099519" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.100220" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.099957" elapsed="0.000305"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:49.101675" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-17T03:25:49.101471" elapsed="0.000231"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-17T03:25:49.102035" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-17T03:25:49.101859" elapsed="0.000203"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.102298" elapsed="0.000216"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.102922" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.102673" elapsed="0.000293"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-17T03:25:49.103010" elapsed="0.000035"/>
</return>
<msg time="2026-04-17T03:25:49.103191" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-17T03:25:49.100473" elapsed="0.002743"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="PUT On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:49.108535" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.105668" elapsed="0.004605">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:49.103290" elapsed="0.007074">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="PUT On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a PUT request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.110563" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.110398" elapsed="0.000231"/>
</branch>
<status status="FAIL" start="2026-04-17T03:25:49.103271" elapsed="0.007382">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.111066" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.111284" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.111183" elapsed="0.000147"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:49.111165" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.111505" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.111572" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<doc>PUT data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.097719" elapsed="0.013963">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.111937" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Put_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.925910" elapsed="0.186124">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.112356" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.112164" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:49.112146" elapsed="0.000301"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.112479" elapsed="0.000014"/>
</return>
<arg>${CHANGE_COUNTER_TEMPLATE_FOLDER}${/}change_counter</arg>
<arg>mapping=${mapping}</arg>
<doc>Add arguments sensible for XML data, return Put_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.921351" elapsed="0.191224">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>example-linkstate-topology</arg>
<doc>Configure data change counter to count transactions affecting
${topology_name} instead of previously configured topology name.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.919855" elapsed="0.192836">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.114308" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:49.113961" elapsed="0.000391"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:49.113374" elapsed="0.001029"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.115256" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.114840" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.114821" elapsed="0.000520"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.115491" elapsed="0.000307"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.121074" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:49.120623" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:49.121338" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.121193" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.121174" elapsed="0.000225"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.121844" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:49.121550" elapsed="0.000321"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:49.122314" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Restore_Data_Change_Counter_Configuration</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.122031" elapsed="0.000373"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:49.122755" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:49.122572" elapsed="0.000210"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.123305" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:49.122940" elapsed="0.000393"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.123801" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:49.123492" elapsed="0.000337"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.124443" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:49.123987" elapsed="0.000509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.124967" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.124671" elapsed="0.000345"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:49.120302" elapsed="0.004769"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:49.114625" elapsed="0.010515"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:49.113018" elapsed="0.012166"/>
</kw>
<doc>Configure data change counter back to count transactions affecting example-linkstate-topology.</doc>
<status status="FAIL" start="2026-04-17T03:25:48.852443" elapsed="0.272785">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_restore_data_change_counter_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/odl-data-change-counter-config:data-change-counter-config=data-change-counter (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-s10-t21" name="Delete_Bgp_Peer_Configuration" line="246">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-17T03:25:49.128693" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-17T03:25:49.128392" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.129973" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.129860" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.129841" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.134934" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.134829" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.134811" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.136023" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:49.135640" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.136528" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-17T03:25:49.136234" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-17T03:25:49.136597" elapsed="0.000051"/>
</return>
<msg time="2026-04-17T03:25:49.136773" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-17T03:25:49.135255" elapsed="0.001542"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.142490" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.142383" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.142364" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.143738" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.143633" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.143615" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:49.144278" level="INFO">${karaf_connection_index} = 27</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.143952" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.144709" level="INFO">${current_connection_index} = 15</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:49.144468" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.145524" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.145257" elapsed="0.000931">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:49.146375" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-17T03:25:49.146420" level="INFO">${message_write} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.144897" elapsed="0.001547"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.147216" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.146960" elapsed="0.000890">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-17T03:25:49.148032" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-17T03:25:49.148078" level="INFO">${message_wait} = Cannot open session, you need to establish a connection first.</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.146616" elapsed="0.001507"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.149049" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</msg>
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.148428" elapsed="0.000707">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:49.148201" elapsed="0.001005">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</status>
</branch>
<status status="FAIL" start="2026-04-17T03:25:49.148182" elapsed="0.001056">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</status>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.149403" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.149632" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.149487" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:49.149470" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.149736" elapsed="0.000015"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:49.152316" elapsed="0.000148"/>
</kw>
<msg time="2026-04-17T03:25:49.152528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.151183" elapsed="0.001508"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.152971" elapsed="0.000074"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.153345" elapsed="0.000073"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:49.150555" elapsed="0.002969"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:49.150005" elapsed="0.003582"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.143332" elapsed="0.010338">Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</status>
</kw>
<msg time="2026-04-17T03:25:49.153772" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:49.153815" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test bgpcep-bgp-ingest.txt.Singlepeer Changecount.Delete_Bgp_Peer_Configuration"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.142712" elapsed="0.011164"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.154066" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.153955" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.153936" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.155163" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.155027" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.155009" elapsed="0.000233"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.155527" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:49.155630" level="INFO">${current_ssh_connection_object} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:49.155401" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.156075" level="INFO">{1: 27}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.155814" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.156544" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.156293" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.157212" elapsed="0.000262"/>
</kw>
<msg time="2026-04-17T03:25:49.157572" level="INFO">${status} = PASS</msg>
<msg time="2026-04-17T03:25:49.157618" level="INFO">${old_connection_index} = 27</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.156769" elapsed="0.000872"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:49.158530" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.159855" level="FAIL">Cannot open session, you need to establish a connection first.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.159447" elapsed="0.001323">Cannot open session, you need to establish a connection first.</status>
</kw>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.158891" elapsed="0.001978"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:49.161655" elapsed="0.000311"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.161045" elapsed="0.001004"/>
</kw>
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="PASS" start="2026-04-17T03:25:49.157974" elapsed="0.004148"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:49.157731" elapsed="0.004451"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.157707" elapsed="0.004500"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-17T03:25:49.163156" level="INFO">${ip_address} = 10.30.171.179</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.162825" elapsed="0.000359"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-17T03:25:49.163232" elapsed="0.000032"/>
</return>
<msg time="2026-04-17T03:25:49.163387" level="INFO">${odl_ip} = 10.30.171.179</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-17T03:25:49.162468" elapsed="0.000943"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.163569" elapsed="0.000448"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.164351" level="INFO">index=28
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:49.164455" level="INFO">${karaf_connection_object} = index=28
host=10.30.171.179
alias=None
port=8101
timeout=10 seconds
newline=

prompt=opendaylight-user
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_err...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:49.164223" elapsed="0.000259"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.164690" elapsed="0.004310"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.169484" level="INFO">Logging into '10.30.171.179:8101' as 'karaf'.</msg>
<msg time="2026-04-17T03:25:49.170879" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.169191" elapsed="0.002122">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:49.186123" elapsed="0.000389"/>
</kw>
<msg time="2026-04-17T03:25:49.186599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.184633" elapsed="0.002112"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.186912" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.187078" elapsed="0.000035"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:49.172204" elapsed="0.014971"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-17T03:25:49.171655" elapsed="0.015566"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.154733" elapsed="0.032569">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.187656" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.187731" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.142031" elapsed="0.045806">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</status>
</kw>
<msg time="2026-04-17T03:25:49.187943" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-17T03:25:49.187986" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.179</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.137246" elapsed="0.050763"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.188391" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.188087" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.188068" elapsed="0.000400"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-17T03:25:49.137081" elapsed="0.051410"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-17T03:25:49.136901" elapsed="0.051623"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-17T03:25:49.134463" elapsed="0.054118"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-17T03:25:49.129570" elapsed="0.059102"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.129137" elapsed="0.059579"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-17T03:25:49.126224" elapsed="0.062544"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.189768" level="INFO">&amp;{mapping} = { DEVICE_NAME=controller-config | BGP_NAME=example-bgp-peer | IP=10.30.171.117 | BGP_RIB_OPENCONFIG=example-bgp-rib }</msg>
<var>&amp;{mapping}</var>
<arg>DEVICE_NAME=${DEVICE_NAME}</arg>
<arg>BGP_NAME=${BGP_PEER_NAME}</arg>
<arg>IP=${TOOLS_SYSTEM_IP}</arg>
<arg>BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.188956" elapsed="0.000841"/>
</kw>
<kw name="Delete_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.232899" level="INFO">${file_path_stream} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:49.232495" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-17T03:25:49.233686" level="FAIL">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer.vanadium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.233452" elapsed="0.000301">File '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer.vanadium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-17T03:25:49.233844" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-17T03:25:49.233114" elapsed="0.000754"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.234436" level="INFO">${file_path} = /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-17T03:25:49.234037" elapsed="0.000467"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-17T03:25:49.234813" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer/location.uri"&gt;/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/variables/bgpuser/bgp_peer/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-17T03:25:49.234964" level="INFO">${template} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,$BGP_RIB_OPENCONFIG/bgp-openconfig-ext...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-17T03:25:49.234673" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.235411" level="INFO">rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,$BGP_RIB_OPENCONFIG/bgp-openconfig-extensions:bgp/neighbors/neighbor=$IP
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.235163" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.236642" level="INFO">mapping: {'DEVICE_NAME': 'controller-config', 'BGP_NAME': 'example-bgp-peer', 'IP': '10.30.171.117', 'BGP_RIB_OPENCONFIG': 'example-bgp-rib'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.236357" elapsed="0.000331"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.237127" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.236852" elapsed="0.000302"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.237819" level="INFO">${value} = controller-config</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:25:49.237520" elapsed="0.000324"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:49.238605" level="INFO">${encoded} = controller-config</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.238383" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:25:49.238682" elapsed="0.000030"/>
</return>
<msg time="2026-04-17T03:25:49.238832" level="INFO">${encoded_value} = controller-config</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:25:49.238040" elapsed="0.000816"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.239011" elapsed="0.000249"/>
</kw>
<var name="${key}">DEVICE_NAME</var>
<var name="${value}">controller-config</var>
<status status="PASS" start="2026-04-17T03:25:49.237381" elapsed="0.001919"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.239846" level="INFO">${value} = example-bgp-peer</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:25:49.239550" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:49.240622" level="INFO">${encoded} = example-bgp-peer</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.240395" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:25:49.240696" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:25:49.240844" level="INFO">${encoded_value} = example-bgp-peer</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:25:49.240061" elapsed="0.000807"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.241022" elapsed="0.000237"/>
</kw>
<var name="${key}">BGP_NAME</var>
<var name="${value}">example-bgp-peer</var>
<status status="PASS" start="2026-04-17T03:25:49.239414" elapsed="0.001887"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.241844" level="INFO">${value} = 10.30.171.117</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:25:49.241548" elapsed="0.000322"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:49.242605" level="INFO">${encoded} = 10.30.171.117</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.242397" elapsed="0.000233"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:25:49.242678" elapsed="0.000028"/>
</return>
<msg time="2026-04-17T03:25:49.242824" level="INFO">${encoded_value} = 10.30.171.117</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:25:49.242062" elapsed="0.000785"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.243000" elapsed="0.000236"/>
</kw>
<var name="${key}">IP</var>
<var name="${value}">10.30.171.117</var>
<status status="PASS" start="2026-04-17T03:25:49.241412" elapsed="0.001865"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.243818" level="INFO">${value} = example-bgp-rib</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-17T03:25:49.243522" elapsed="0.000320"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:49.244610" level="INFO">${encoded} = example-bgp-rib</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.244366" elapsed="0.000270"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-17T03:25:49.244684" elapsed="0.000029"/>
</return>
<msg time="2026-04-17T03:25:49.244899" level="INFO">${encoded_value} = example-bgp-rib</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-17T03:25:49.244033" elapsed="0.000890"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.245081" elapsed="0.000242"/>
</kw>
<var name="${key}">BGP_RIB_OPENCONFIG</var>
<var name="${value}">example-bgp-rib</var>
<status status="PASS" start="2026-04-17T03:25:49.243387" elapsed="0.001976"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-17T03:25:49.237204" elapsed="0.008194"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-17T03:25:49.245442" elapsed="0.000027"/>
</return>
<msg time="2026-04-17T03:25:49.245599" level="INFO">${mapping_to_use} = {'DEVICE_NAME': 'controller-config', 'BGP_NAME': 'example-bgp-peer', 'IP': '10.30.171.117', 'BGP_RIB_OPENCONFIG': 'example-bgp-rib'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-17T03:25:49.235825" elapsed="0.009800"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:49.235523" elapsed="0.010134"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.245835" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.245682" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.235503" elapsed="0.010408"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.246718" level="INFO">${final_text} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensi...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:49.246060" elapsed="0.000686"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-17T03:25:49.246794" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="PASS" start="2026-04-17T03:25:49.231861" elapsed="0.015054"/>
</kw>
<msg time="2026-04-17T03:25:49.246970" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.219213" elapsed="0.027802"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.259718" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.272074" elapsed="0.000038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name} exists. If yes read and Log contents of file /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer.vanadium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/suites/bgpcep/bgpingest/../../../variables/bgpuser//bgp_peer/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.284643" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.284841" elapsed="0.000020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.285017" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.285398" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.285251" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-17T03:25:49.285236" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.285621" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.285793" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.285999" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-17T03:25:49.285208" elapsed="0.000843"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.285103" elapsed="0.000974"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.286243" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.286317" elapsed="0.000015"/>
</return>
<msg time="2026-04-17T03:25:49.286438" level="INFO">${uri} = rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensi...</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=${location}</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-17T03:25:49.214865" elapsed="0.071599"/>
</kw>
<kw name="Delete_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.287575" level="INFO">rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.287324" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="DELETE On Session" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:49.292621" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.289757" elapsed="0.004543">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-17T03:25:49.287685" elapsed="0.006695">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="DELETE On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a DELETE request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.294570" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.294414" elapsed="0.000216"/>
</branch>
<status status="FAIL" start="2026-04-17T03:25:49.287668" elapsed="0.006985">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.295029" elapsed="0.000025"/>
</kw>
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.295123" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>DELETE resource at URI, check status_code and return response text..</doc>
<status status="FAIL" start="2026-04-17T03:25:49.286732" elapsed="0.008496">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-17T03:25:49.295291" elapsed="0.000016"/>
</return>
<arg>${BGP_VARIABLES_FOLDER}${/}bgp_peer</arg>
<arg>mapping=${mapping}</arg>
<doc>Resolve URI from folder, issue DELETE request.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.190041" elapsed="0.105342">ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="Run Keyword If Test Failed" owner="BuiltIn">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.296776" level="INFO">${SuiteFastFail} = True</msg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-17T03:25:49.296440" elapsed="0.000379"/>
</kw>
<arg>BuiltIn.Set_Suite_Variable</arg>
<arg>${SuiteFastFail}</arg>
<arg>True</arg>
<doc>Runs the given keyword with the given arguments, if the test failed.</doc>
<status status="PASS" start="2026-04-17T03:25:49.296046" elapsed="0.000824"/>
</kw>
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.297716" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-17T03:25:49.297330" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.297312" elapsed="0.000490"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.297954" elapsed="0.000330"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.303517" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:49.303108" elapsed="0.000436"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-17T03:25:49.303759" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-17T03:25:49.303618" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.303599" elapsed="0.000220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.304285" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-17T03:25:49.303970" elapsed="0.000343"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-17T03:25:49.304750" level="INFO">${reference} = bgpcep_bgp_ingest_txt_Singlepeer_Changecount_Delete_Bgp_Peer_Configuration</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.304487" elapsed="0.000290"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-17T03:25:49.305132" level="INFO">${reference} = bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-17T03:25:49.304941" elapsed="0.000218"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.305663" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:49.305317" elapsed="0.000372"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.306173" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-17T03:25:49.305848" elapsed="0.000353"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.306799" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-17T03:25:49.306361" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.307373" level="INFO">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.307012" elapsed="0.000411"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-17T03:25:49.302784" elapsed="0.004697"/>
</kw>
<status status="PASS" start="2026-04-17T03:25:49.297112" elapsed="0.010422"/>
</kw>
<doc>Test case teardown. Show linked bugs and start fast failing in case of failure.</doc>
<status status="PASS" start="2026-04-17T03:25:49.295736" elapsed="0.011842"/>
</kw>
<doc>Revert the BGP configuration to the original state: without any configured peers.</doc>
<status status="FAIL" start="2026-04-17T03:25:49.125621" elapsed="0.182006">... click for list of related bugs or create a new one if needed (with the
"bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=bgpcep_bgp_ingest_txt_singlepeer_changecount_delete_bgp_peer_configuration&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.179', port=8181): Max retries exceeded with url: /rests/data/openconfig-network-instance:network-instances/network-instance=global-bgp/openconfig-network-instance:protocols/protocol=openconfig-policy-types%3ABGP,example-bgp-rib/bgp-openconfig-extensions:bgp/neighbors/neighbor=10.30.171.117 (Caused by NewConnectionError("HTTPConnection(host='10.30.171.179', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<kw name="Teardown_Everything" type="TEARDOWN">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Search_And_Kill_Remote_Python" owner="KillPythonTool">
<kw name="Search_For_Remote_Python_Processes" owner="KillPythonTool">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.309792" level="INFO">Executing command 'ps -elf | egrep python | egrep 'play.py' | egrep -v grep'.</msg>
<msg time="2026-04-17T03:25:49.324145" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-17T03:25:49.324364" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>ps -elf | egrep python | egrep ${filter} | egrep -v grep</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-17T03:25:49.309650" elapsed="0.014769"/>
</kw>
<return>
<value>${processes}</value>
<status status="PASS" start="2026-04-17T03:25:49.324567" elapsed="0.000084"/>
</return>
<msg time="2026-04-17T03:25:49.324935" level="INFO">${processes} = </msg>
<var>${processes}</var>
<arg>${filter}</arg>
<doc>Only searches for the list of processes, in case something else than kill has to be done with them.</doc>
<status status="PASS" start="2026-04-17T03:25:49.309373" elapsed="0.015617"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.325975" level="INFO"/>
<arg>${processes}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:49.325401" elapsed="0.000665"/>
</kw>
<kw name="Kill_Remote_Processes" owner="KillPythonTool">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.328031" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:25:49.328241" level="INFO">${arg_length} = 0</msg>
<var>${arg_length}</var>
<arg>${pself_lines}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:25:49.327417" elapsed="0.000881"/>
</kw>
<if>
<branch type="IF" condition="${arg_length} == 0">
<return>
<status status="PASS" start="2026-04-17T03:25:49.328751" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-17T03:25:49.328492" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-17T03:25:49.328419" elapsed="0.000514"/>
</if>
<kw name="Execute Command" owner="SSHLibrary">
<var>${commands}</var>
<arg>echo '${pself_lines}' | awk '{print "kill -${signal}",$4}'</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.329322" elapsed="0.000050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${commands}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.329727" elapsed="0.000045"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<var>${stdout}</var>
<var>${stderr}</var>
<arg>echo 'set -exu; ${commands}' | sudo sh</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:49.330143" elapsed="0.000049"/>
</kw>
<arg>${processes}</arg>
<doc>Kill processes by PIDs from given list (no-op if the list is empty), using specified signal. Log the kill commands used.</doc>
<status status="PASS" start="2026-04-17T03:25:49.326654" elapsed="0.003683"/>
</kw>
<arg>'play\.py'</arg>
<doc>The main keyword. Search for processes, Log the list of them, kill them.</doc>
<status status="PASS" start="2026-04-17T03:25:49.309062" elapsed="0.021392"/>
</kw>
<arg>KillPythonTool.Search_And_Kill_Remote_Python</arg>
<arg>'play\.py'</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.308658" elapsed="0.021896"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Sysstat_Statistics" owner="Utils">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.332966" level="INFO">index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-17T03:25:49.333225" level="INFO">${current_connection} = index=15
host=10.30.171.117
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-17T03:25:49.332703" elapsed="0.000585"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.334765" level="INFO">${odl_connection} = 29</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-17T03:25:49.334223" elapsed="0.000579"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-17T03:25:49.337542" level="INFO">Length is 0.</msg>
<msg time="2026-04-17T03:25:49.337656" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-17T03:25:49.337172" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.337918" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-17T03:25:49.339616" level="INFO">Logging into '10.30.171.179:22' as 'jenkins'.</msg>
<msg time="2026-04-17T03:25:50.090946" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-171-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Fri Apr 17 03:25:49 UTC 2026

  System load:  0.08               Processes:             123
  Usage of /:   10.3% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.179
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

10 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '24.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Fri Apr 17 03:23:42 2026 from 10.30.171.114
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-17T03:25:49.339169" elapsed="0.751975"/>
</kw>
<msg time="2026-04-17T03:25:50.091230" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.338636" elapsed="0.752688"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-17T03:25:49.336522" elapsed="0.754917"/>
</kw>
<msg time="2026-04-17T03:25:50.091576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:49.335891" elapsed="0.755760"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-17T03:25:49.335113" elapsed="0.756624"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-17T03:25:50.091825" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.179 and return its identifier.</doc>
<status status="PASS" start="2026-04-17T03:25:49.333757" elapsed="0.758238"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-17T03:25:50.093682" level="INFO">sar -A -f /var/log/sa/sa*</msg>
<arg>sar -A -f /var/log/sa/sa*</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-17T03:25:50.092234" elapsed="0.001504"/>
</kw>
<kw name="Read Until Prompt" owner="SSHLibrary">
<msg time="2026-04-17T03:25:50.096903" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<msg time="2026-04-17T03:25:50.097005" level="INFO">${output} = [?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<var>${output}</var>
<doc>Consumes and returns the server output until the prompt is found.</doc>
<status status="PASS" start="2026-04-17T03:25:50.093909" elapsed="0.003124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-17T03:25:50.097532" level="INFO">[?2004lCannot open /var/log/sa/sa*: No such file or directory
[?2004h[jenkins@releng-53153-188-0-builder-0 ~]&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-17T03:25:50.097221" elapsed="0.000360"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-17T03:25:50.097741" elapsed="0.000153"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-17T03:25:50.097937" elapsed="0.000030"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-17T03:25:50.101709" elapsed="0.000147"/>
</kw>
<msg time="2026-04-17T03:25:50.101900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-17T03:25:50.101131" elapsed="0.000828"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:50.102141" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-17T03:25:50.102309" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-17T03:25:50.098305" elapsed="0.004086"/>
</kw>
<doc>Store current connection index, open new connection to ip_address. Run command to get sysstat results from script,
which is running on all children nodes. Returns cpu, network, memory usage statistics from the node for each 10 minutes
that node was running. Used for debug purposes. Returns whole output of sysstat.</doc>
<status status="PASS" start="2026-04-17T03:25:49.331947" elapsed="0.770536"/>
</kw>
<arg>Utils.Get_Sysstat_Statistics</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-17T03:25:49.330911" elapsed="0.771619"/>
</kw>
<kw name="Delete All Sessions" owner="RequestsLibrary">
<msg time="2026-04-17T03:25:50.102759" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects</doc>
<status status="PASS" start="2026-04-17T03:25:50.102683" elapsed="0.000223"/>
</kw>
<kw name="Close All Connections" owner="SSHLibrary">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-17T03:25:50.103059" elapsed="0.000315"/>
</kw>
<doc>Make sure Python tool was killed and tear down imported Resources.</doc>
<status status="PASS" start="2026-04-17T03:25:49.308366" elapsed="0.795065"/>
</kw>
<doc>BGP performance of ingesting from 1 iBGP peer, data change counter is used.

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 suite uses play.py as single iBGP peer.
The suite only looks at example-ipv4-topology, so RIB is not examined.

This suite requires odl-bgpcep-data-change-counter to be installed so
make sure it is added to "install-features" of any jobs that are going
to invoke it.

The suite consists of two halves, differing on which side initiates BGP connection.
Data change counter is a lightweight way to detect "work is being done".
WaitUtils provide a nice Keyword to wait for stability, but it needs
initial value, that is why Store_Change_Count appears just before work-inducing action.
The time for Wait_For_Stable_* cases to finish is the main performance metric.
After waiting for stability is done, full check on number of prefixes present is performed.

Brief description how to configure BGP peer can be found here:
https://wiki.opendaylight.org/view/BGP_LS_PCEP:User_Guide#BGP_Peer
http://docs.opendaylight.org/en/stable-boron/user-guide/bgp-user-guide.html#bgp-peering

TODO: Currently, if a bug causes zero increase of data changes,
affected test cases will wait for max time. Reconsider.
If zero increase is allowed as stable, higher number of repetitions should be required.

Additionally this test suite is not compatible with Helium and Hydrogen
releases as they don't include data change counter feature.
Use the other version of the suite (singlepeer_prefixcount.robot) to test them.</doc>
<status status="FAIL" start="2026-04-17T03:23:41.922791" elapsed="128.180675"/>
</suite>
<status status="FAIL" start="2026-04-17T03:10:45.516965" elapsed="904.587995"/>
</suite>
<statistics>
<total>
<stat pass="17" fail="129" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="9" fail="68" skip="0">critical</stat>
</tag>
<suite>
<stat name="bgpcep-bgp-ingest.txt" id="s1" pass="17" fail="129" skip="0">bgpcep-bgp-ingest.txt</stat>
<stat name="Singlepeer Pc Shm 300Kroutes" id="s1-s1" pass="0" fail="10" skip="0">bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes</stat>
<stat name="Singlepeer Prefixcount" id="s1-s2" pass="4" fail="14" skip="0">bgpcep-bgp-ingest.txt.Singlepeer Prefixcount</stat>
<stat name="Singlepeer Changecount" id="s1-s3" pass="4" fail="17" skip="0">bgpcep-bgp-ingest.txt.Singlepeer Changecount</stat>
<stat name="Bgp App Peer Prefixcount" id="s1-s4" pass="0" fail="20" skip="0">bgpcep-bgp-ingest.txt.Bgp App Peer Prefixcount</stat>
<stat name="Manypeers Prefixcount" id="s1-s5" pass="0" fail="11" skip="0">bgpcep-bgp-ingest.txt.Manypeers Prefixcount</stat>
<stat name="Manypeers Changecount" id="s1-s6" pass="0" fail="14" skip="0">bgpcep-bgp-ingest.txt.Manypeers Changecount</stat>
<stat name="Restart Odl With Tell Based True" id="s1-s7" pass="1" fail="2" skip="0">bgpcep-bgp-ingest.txt.Restart Odl With Tell Based True</stat>
<stat name="Singlepeer Pc Shm 300Kroutes" id="s1-s8" pass="0" fail="10" skip="0">bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes</stat>
<stat name="Singlepeer Prefixcount" id="s1-s9" pass="4" fail="14" skip="0">bgpcep-bgp-ingest.txt.Singlepeer Prefixcount</stat>
<stat name="Singlepeer Changecount" id="s1-s10" pass="4" fail="17" skip="0">bgpcep-bgp-ingest.txt.Singlepeer Changecount</stat>
</suite>
</statistics>
<errors>
<msg time="2026-04-17T03:10:45.765634" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:45.771413" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:45.789817" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:45.827272" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:45.947144" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:46.102169" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:50.940279" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:50.941063" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:50.942007" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:50.942554" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:10:50.955067" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:12:58.820759" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:12:58.821800" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:12:58.822347" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:12:58.822801" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:12:58.841183" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:07.359924" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Bgp App Peer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:07.360869" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Bgp App Peer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:07.361846" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Bgp App Peer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:07.362418" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Bgp App Peer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:07.368511" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'bgpcep-bgp-ingest.txt.Bgp App Peer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:07.371466" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Bgp App Peer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:12.730495" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Manypeers Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:12.731648" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Manypeers Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:12.732209" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Manypeers Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:12.732849" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Manypeers Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:12.741894" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Manypeers Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:17.426375" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Manypeers Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:17.427152" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Manypeers Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:17.428545" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Manypeers Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:17.429045" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Manypeers Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:17.434877" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'bgpcep-bgp-ingest.txt.Manypeers Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:15:17.439229" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Manypeers Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:29.739564" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:29.740328" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:29.740857" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:29.741336" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:29.747874" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/NexusKeywords.robot' on line 20: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:29.755507" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Pc Shm 300Kroutes' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:34.351382" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:34.352579" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:34.353181" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:34.353703" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:21:34.365336" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Prefixcount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:23:41.925888" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/BGPSpeaker.robot' on line 27: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:23:41.926700" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/RemoteBash.robot' on line 25: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:23:41.927379" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/SSHKeywords.robot' on line 16: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:23:41.927944" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/Utils.robot' on line 4: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
<msg time="2026-04-17T03:23:41.941577" level="WARN">Error in file '/w/workspace/bgpcep-csit-1node-bgp-ingest-all-vanadium/test/csit/libraries/KarafKeywords.robot' on line 9: Suite 'bgpcep-bgp-ingest.txt.Singlepeer Changecount' has already imported library 'SSHLibrary' with different arguments. This import is ignored.</msg>
</errors>
</robot>
